Runtime assertions for Ruby
literal.fun
ruby
1# frozen_string_literal: true
2
3Age = Literal::Value(Integer, 18..)
4
5test do
6 Age.new(17)
7rescue => error
8 assert_equal error.class, Literal::TypeError
9 assert_equal error.message, "Type mismatch\n\n" \
10 " _Constraint(Integer, 18..)\n" \
11 " Expected: 18..\n" \
12 " Actual (Integer): 17\n"
13
14 # deconstruct_keys
15 key_names = [:receiver, :method, :label, :actual]
16 exp_keys = {
17 receiver: nil,
18 method: nil,
19 label: nil,
20 actual: 17,
21 }
22 assert_equal error.deconstruct_keys(key_names), exp_keys
23end