require(File.expand_path(File.dirname(__FILE__)+'/helpers_tests.rb'))
require 'ostruct'
class StatsampleGGobiTestCase < MiniTest::Unit::TestCase

  def setup
    v1=([10.2,20.3,10,20,30,40,30,20,30,40]*10).to_vector(:scale)
    @v2=(%w{a b c a a a b b c d}*10).to_vector(:nominal)
    @v2.labels={"a"=>"letter a","d"=>"letter d"}
    v3=([1,2,3,4,5,4,3,2,1,2]*10).to_vector(:ordinal)
    @ds={'v1'=>v1,'v2'=>@v2,'v3'=>v3}.to_dataset
  end
  def test_values_definition
    a=[1.0,2,"a",nil]
    assert_equal("1.0 2 a NA", Statsample::GGobi.values_definition(a,"NA"))
  end
  def test_variable_definition
    carrier=OpenStruct.new
    carrier.categorials=[]
    carrier.conversions={}
    real_var_definition=Statsample::GGobi.variable_definition(carrier,@v2,'variable 2',"v2")
		expected=<<-EOS
<categoricalvariable name="variable 2" nickname="v2">
<levels count="4">
<level value="1">letter a</level>
<level value="2">b</level>
<level value="3">c</level>
<level value="4">letter d</level></levels>
</categoricalvariable>
    EOS
    assert_equal(expected.gsub(/\s/," "),real_var_definition.gsub(/\s/," "))
    assert_equal({'variable 2'=>{'a'=>1,'b'=>2,'c'=>3,'d'=>4}},carrier.conversions)
    assert_equal(['variable 2'],carrier.categorials)
  end
end
