@@ -57,4 +57,41 @@ def test_spaceship
5757
5858 assert_equal 1 , a_p . <=>( a )
5959 end
60+
61+ def test_deconstruct
62+ name_tuple = Gem ::NameTuple . new "rails" , Gem ::Version . new ( "7.0.0" ) , "ruby"
63+ assert_equal [ "rails" , Gem ::Version . new ( "7.0.0" ) , "ruby" ] , name_tuple . deconstruct
64+ end
65+
66+ def test_deconstruct_keys
67+ name_tuple = Gem ::NameTuple . new "rails" , Gem ::Version . new ( "7.0.0" ) , "x86_64-linux"
68+ keys = name_tuple . deconstruct_keys ( nil )
69+ assert_equal "rails" , keys [ :name ]
70+ assert_equal Gem ::Version . new ( "7.0.0" ) , keys [ :version ]
71+ assert_equal "x86_64-linux" , keys [ :platform ]
72+ end
73+
74+ def test_pattern_matching_array
75+ name_tuple = Gem ::NameTuple . new "rails" , Gem ::Version . new ( "7.0.0" ) , "ruby"
76+ result =
77+ case name_tuple
78+ in [ name , version , "ruby" ]
79+ "#{ name } -#{ version } "
80+ else
81+ "no match"
82+ end
83+ assert_equal "rails-7.0.0" , result
84+ end
85+
86+ def test_pattern_matching_hash
87+ name_tuple = Gem ::NameTuple . new "rails" , Gem ::Version . new ( "7.0.0" ) , "ruby"
88+ result =
89+ case name_tuple
90+ in name : "rails" , version :, platform : "ruby"
91+ version . to_s
92+ else
93+ "no match"
94+ end
95+ assert_equal "7.0.0" , result
96+ end
6097end
0 commit comments