object_test.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package selsl
  2. import "testing"
  3. func Check(t *testing.T, ok bool, mesg ...interface{}) {
  4. reporter := t.Logf
  5. head := "Check:"
  6. if !ok {
  7. reporter = t.Errorf
  8. head = "Check failed:"
  9. }
  10. if len(mesg) < 1 {
  11. reporter(head)
  12. } else {
  13. reporter(head+mesg[0].(string), mesg[1:]...)
  14. }
  15. }
  16. func TestCheck(t *testing.T) {
  17. Check(t, true, "true")
  18. }
  19. func TestRootType(t *testing.T) {
  20. name := Send(RootType, "name", nil, nil)
  21. nameString := string(name.(String))
  22. Check(t, nameString == "Type",
  23. "Root type name: %v", name)
  24. }
  25. func TestStringType(t *testing.T) {
  26. raw := "banana"
  27. str := String(raw)
  28. name := Send(str, "name", nil, nil)
  29. nameString := string(name.(String))
  30. Check(t, nameString == raw,
  31. "String type name: %v", name)
  32. }
  33. func TestListType(t *testing.T) {
  34. raw := []string{"apple", "banana", "pear"}
  35. list := List{String(raw[0]),
  36. String(raw[1]),
  37. String(raw[2]),
  38. }
  39. clone := list.Clone().(List)
  40. alt := []string{"apple", "kumquat", "pear"}
  41. clone[1] = String(alt[1])
  42. for i, s := range raw {
  43. f := string(list[i].(String))
  44. Check(t, s == f, "list %s <-> %s", s, f)
  45. }
  46. for i, s := range alt {
  47. f := string(clone[i].(String))
  48. Check(t, s == f, "clone %s <-> %s", s, f)
  49. }
  50. }