2015-02-09 04:38:37 +00:00
package config
2015-03-15 04:27:04 +00:00
import "testing"
import "reflect"
2015-02-09 04:38:37 +00:00
func TestParseCmdline ( t * testing . T ) {
expected := map [ string ] interface { } {
2015-02-14 16:29:07 +00:00
"rescue" : true ,
"key1" : "value1" ,
"key2" : "value2" ,
"keyArray" : [ ] string { "1" , "2" } ,
2015-02-09 04:38:37 +00:00
"obj1" : map [ string ] interface { } {
"key3" : "3value" ,
"obj2" : map [ string ] interface { } {
"key4" : true ,
} ,
} ,
"key5" : 5 ,
}
2015-02-14 16:29:07 +00:00
actual := parseCmdline ( "a b rancher.rescue rancher.keyArray=[1,2] rancher.key1=value1 c rancher.key2=value2 rancher.obj1.key3=3value rancher.obj1.obj2.key4 rancher.key5=5" )
2015-02-09 04:38:37 +00:00
2015-03-15 04:27:04 +00:00
ok := reflect . DeepEqual ( actual , expected )
if ! ok {
t . Fatalf ( "%v != %v" , actual , expected )
}
}
func TestGet ( t * testing . T ) {
data := map [ interface { } ] interface { } {
"key" : "value" ,
"key2" : map [ interface { } ] interface { } {
"subkey" : "subvalue" ,
"subnum" : 42 ,
} ,
}
tests := map [ string ] interface { } {
"key" : "value" ,
"key2.subkey" : "subvalue" ,
"key2.subnum" : 42 ,
"key2.subkey2" : "" ,
"foo" : "" ,
}
for k , v := range tests {
if getOrSetVal ( k , data , nil ) != v {
t . Fatalf ( "Expected %v, got %v, for key %s" , v , getOrSetVal ( k , data , nil ) , k )
}
}
}
func TestSet ( t * testing . T ) {
data := map [ interface { } ] interface { } {
"key" : "value" ,
"key2" : map [ interface { } ] interface { } {
"subkey" : "subvalue" ,
"subnum" : 42 ,
} ,
}
expected := map [ interface { } ] interface { } {
"key" : "value2" ,
"key2" : map [ interface { } ] interface { } {
"subkey" : "subvalue2" ,
"subkey2" : "value" ,
"subkey3" : 43 ,
"subnum" : 42 ,
} ,
"key3" : map [ interface { } ] interface { } {
"subkey3" : 44 ,
} ,
"key4" : "value4" ,
}
tests := map [ string ] interface { } {
"key" : "value2" ,
"key2.subkey" : "subvalue2" ,
"key2.subkey2" : "value" ,
"key2.subkey3" : 43 ,
"key3.subkey3" : 44 ,
"key4" : "value4" ,
}
for k , v := range tests {
getOrSetVal ( k , data , v )
if getOrSetVal ( k , data , nil ) != v {
t . Fatalf ( "Expected %v, got %v, for key %s" , v , getOrSetVal ( k , data , nil ) , k )
}
}
if ! reflect . DeepEqual ( data , expected ) {
t . Fatalf ( "Expected %v, got %v" , expected , data )
2015-02-09 04:38:37 +00:00
}
}