Runtime assertions for Ruby
literal.fun
ruby
1# frozen_string_literal: true
2
3include Literal::Types
4
5test "with named params" do
6 pattern = _Pattern(/\A(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})\z/) do |year:, month:, day:|
7 year.to_i >= 2000 && month.to_i.between?(1, 12) && day.to_i.between?(1, 31)
8 end
9
10 assert pattern === "2023-04-15"
11 assert pattern === "2050-01-01"
12
13 refute pattern === "1999-12-31"
14 refute pattern === "2023-13-01"
15 refute pattern === "2023-01-32"
16 refute pattern === "abc-12-31"
17end
18
19test "with positional params" do
20 pattern = _Pattern(/\A(\d+)-(\d+)-(\d+)\z/) do |year, month, day|
21 year.to_i >= 2000 && month.to_i.between?(1, 12) && day.to_i.between?(1, 31)
22 end
23
24 assert pattern === "2023-04-15"
25 assert pattern === "2050-01-01"
26
27 refute pattern === "1999-12-31"
28 refute pattern === "2023-13-01"
29 refute pattern === "2023-01-32"
30 refute pattern === "abc-12-31"
31end