Runtime assertions for Ruby literal.fun
ruby
5
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 39 lines 726 B view raw
1# frozen_string_literal: true 2 3UserID = Literal::Value(Integer) 4Age = Literal::Value(Integer, 18..) 5Name = Literal::Value(String) do 6 delegate :length 7end 8 9class Email < Literal::Value(String) 10 delegate :length 11 12 def domain 13 value.split("@").last 14 end 15end 16 17test do 18 user_id = UserID.new(123) 19 assert_equal(123, user_id.to_i) 20 21 assert_raises Literal::TypeError do 22 Age.new(17) 23 end 24 25 name = Name.new("Joel") 26 assert_equal 4, name.length 27end 28 29test "class inheritance" do 30 email = Email.new("joel@drapper.me") 31 32 assert_equal email.domain, "drapper.me" 33 assert_equal email.length, 15 34 assert_equal email.to_s, "joel@drapper.me" 35 assert_equal email.to_str, "joel@drapper.me" 36 37 assert Email === email 38 refute String === email 39end