#!/usr/bin/env ruby
#
# Tests for std::map and std::multimap
#
# 
# 
# 
#

require 'swig_assert'
require 'li_std_map'

swig_assert_each_line(<<'EOF', binding)

a1 = Li_std_map::A.new(3)
a2 = Li_std_map::A.new(7)

p0 = Li_std_map::Pairii.new(1,2)
p1 = Li_std_map::PairA.new(1,a1)
m = {}
m[1] = a1
m[2] = a2

pp1 = Li_std_map::p_identa(p1)
mm = Li_std_map::m_identa(m)

m = Li_std_map::MapA.new
m[1] = a1
m[2] = a2
m.respond_to?(:each_key) == true
m.respond_to?(:each_value) == true

pm ={}
m.each_key { |k| pm[k] = m[k] }
m.each_key { |k| swig_assert_equal("pm[k].object_id", "m[k].object_id", binding, 'only true if %trackings is on') }

m = {}
m[1] = [1,2]
m["foo"] = "hello"

pm = Li_std_map::LanguageMap.new
m.each_key { |k| pm[k] = m[k] }
m.each_key { |k| swig_assert_equal("pm[#{k.inspect}]", "m[#{k.inspect}]", binding) }

m = Li_std_map::MmapA.new
m[0] = a1
m[0] = a2
m[0].size == 2
m.respond_to?(:each) == true
m.respond_to?(:each_key) == true
m.respond_to?(:each_value) == true
m.values_at(0)[0] == m[0]
EOF

mii = Li_std_map::Mapii.new

mii[1] = 1
mii[1] = 2

swig_assert( "mii[1] == 2", binding )
