| #!/usr/bin/env ruby | |
| # | |
| # Standard containers test suite. Tests: | |
| # std::complex, std::vector, std::set and std::map, | |
| # and IN/OUT functions for them. | |
| # | |
| # | |
| # | |
| # | |
| # | |
| require 'swig_assert' | |
| require 'std_containers' | |
| include Std_containers | |
| swig_assert_equal("[true, false]", "videntb([true, false])") | |
| swig_assert_each_line(<<'EOF', binding) | |
| cube = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] | |
| icube = cident(cube) | |
| icube.each_index { |i| swig_assert_equal("cube[#{i}]","icube[#{i}]", binding, 'cident') } | |
| p = [1,2] | |
| p == pident(p) | |
| v = [1,2,3,4,5,6] | |
| iv = vident(v) | |
| iv.each_index { |i| swig_assert_equal("iv[#{i}]","v[#{i}]", binding, 'vident') } | |
| iv = videntu(v) | |
| iv.each_index { |i| swig_assert_equal("iv[#{i}]","v[#{i}]", binding, 'videntu') } | |
| vu = Vector_ui.new(v) | |
| vu[2] == videntu(vu)[2] | |
| v[0,3][1] == vu[0,3][1] | |
| m = [[1,2,3],[2,3],[3,4]] | |
| im = midenti(m) | |
| 0.upto(m.size-1){ |i| 0.upto(m[i].size-1) { |j| swig_assert_equal("m[#{i}][#{j}]","im[#{i}][#{j}]", binding, 'getslice') } } | |
| m = [[1,0,1],[1,1],[1,1]] | |
| im = midentb(m) | |
| 0.upto(m.size-1){ |i| 0.upto(m[i].size-1) { |j| swig_assert_equal("(m[#{i}][#{j}]==1)","im[#{i}][#{j}]", binding, 'getslice') } } | |
| mi = Imatrix.new(m) | |
| mc = Cmatrix.new(m) | |
| mi[0][0] == mc[0][0] # or bad matrix | |
| map ={} | |
| map['hello'] = 1 | |
| map['hi'] = 2 | |
| map['3'] = 2 | |
| imap = Std_containers.mapident(map) | |
| map.each_key { |k| swig_assert_equal("map['#{k}']", "imap['#{k}']", binding) } | |
| mapc ={} | |
| c1 = C.new | |
| c2 = C.new | |
| mapc[1] = c1 | |
| mapc[2] = c2 | |
| mapidentc(mapc) | |
| vi = Vector_i.new([2,2,3,4]) | |
| v1 = vi.dup | |
| v1.class == vi.class | |
| v1 != vi | |
| v1.object_id != vi.object_id | |
| v = [1,2] | |
| v1 = v_inout(vi) | |
| vi[1] == v1[1] | |
| # vi.class == v1.class # only if SWIG_RUBY_EXTRA_NATIVE_CONTAINERS was set | |
| v1,v2 = [[1,2],[3,4]] | |
| v1,v2 = v_inout2(v1,v2) | |
| v2 == [1,2] | |
| v1 == [3,4] | |
| a1 = A.new(1) | |
| a2 = A.new(2) | |
| p1 = [1,a1] | |
| p2 = [2,a2] | |
| v = [p1,p2] | |
| v2 = pia_vident(v) | |
| # v2[0][1].a | |
| # v2[1][1].a | |
| # v3 = Std_containers.vector_piA(v2) | |
| # v3[0][1].a | |
| # v3[1][1].a | |
| s = Set_i.new | |
| s.push(1) | |
| s.push(2) | |
| s.push(3) | |
| j = 1 | |
| s.each { |i| swig_assert_equal("#{i}","#{j}", binding, "for s[#{i}]"); j += 1 } | |
| EOF | |