JezK
Edit File: case_open_cascade.rb
require 'helper' testcase OpenCascade do include AE::Legacy::Assertions class_method :new do OpenCascade[:a=>1] end class_method :[] do test "hash" do o = OpenCascade[:a=>1,:b=>2] assert_equal(1, o.a) assert_equal(2, o.b) end test "hash in hash" do o = OpenCascade[:a=>1,:b=>2,:c=>{:x=>9}] assert_equal(9, o.c.x) end test "hash in hash in hash" do h = {:a=>1,:x=>{:y=>{:z=>1}}} c = OpenCascade[h] assert_equal(1, c.x.y.z) end end method :[] do test "basic assignment" do o = OpenCascade.new o[:a] = 1 assert_equal(1, o[:a]) end end method :[]= do test "basic assignment with primed OpenCascade" do o = OpenCascade[:a=>1] o[:b] = 2 o.to_h.assert == {:a=>1,:b=>2} end end method :to_a do test do o = OpenCascade[:a=>1,:b=>2] a = o.to_a a.assert.include?([:a,1]) a.assert.include?([:b,2]) a.size.assert == 2 end end method :to_h do test do o = OpenCascade[:a=>1] assert_equal({:a=>1}, o.to_h) end end method :merge! do test do o = OpenCascade[:f0=>"f0"] r = OpenCascade[:f0=>"f0", :h0=>"h0"] h = { :h0=>"h0" } assert_equal(r, o.merge!(h)) assert_equal({:f0=>"f0", :h0=>"h0"}, h.merge(o)) end end method :update do test do o = OpenCascade[:f1=>"f1"] o.update(:h1=>"h1") o.assert == OpenCascade[:f1=>"f1", :h1=>"h1"] end end method :method_missing do test "writer and reader" do o = OpenCascade.new 10.times{ |i| o.__send__("n#{i}=", 1 ) } 10.times{ |i| assert_equal(1, o.__send__("n#{i}")) } end end method :<< do test do c = OpenCascade.new c << [:x,8] c << [:y,9] assert_equal(8, c.x) assert_equal(9, c.y) end end end testcase Hash do method :update do test "hash can be updated by OpenCascade" do o = OpenCascade[:f1=>"f1"] h = {:h1=>"h1"} h.update(o) h.assert == {:f1=>"f1", :h1=>"h1"} end end end testcase Array do method :flatten do test "array can be flattened if contains OpenCascade" do cascade = OpenCascade[:foo=>"bar"] array = [cascade] array.flatten # should not raise error end end end