Browse Source

Added tests to ensure that Export() and ExportTo() return original wrapped maps. See #202.

Dmitry Panov 5 years ago
parent
commit
beb0a9a01f
1 changed files with 47 additions and 0 deletions
  1. 47 0
      object_test.go

+ 47 - 0
object_test.go

@@ -241,6 +241,53 @@ func TestExportToCircular(t *testing.T) {
 	}
 }
 
+func TestExportWrappedMap(t *testing.T) {
+	vm := New()
+	m := map[string]interface{}{
+		"test": "failed",
+	}
+	exported := vm.ToValue(m).Export()
+	if exportedMap, ok := exported.(map[string]interface{}); ok {
+		exportedMap["test"] = "passed"
+		if v := m["test"]; v != "passed" {
+			t.Fatalf("Unexpected m[\"test\"]: %v", v)
+		}
+	} else {
+		t.Fatalf("Unexpected export type: %T", exported)
+	}
+}
+
+func TestExportToWrappedMap(t *testing.T) {
+	vm := New()
+	m := map[string]interface{}{
+		"test": "failed",
+	}
+	var exported map[string]interface{}
+	err := vm.ExportTo(vm.ToValue(m), &exported)
+	if err != nil {
+		t.Fatal(err)
+	}
+	exported["test"] = "passed"
+	if v := m["test"]; v != "passed" {
+		t.Fatalf("Unexpected m[\"test\"]: %v", v)
+	}
+}
+
+func TestExportToWrappedMapCustom(t *testing.T) {
+	type CustomMap map[string]bool
+	vm := New()
+	m := CustomMap{}
+	var exported CustomMap
+	err := vm.ExportTo(vm.ToValue(m), &exported)
+	if err != nil {
+		t.Fatal(err)
+	}
+	exported["test"] = true
+	if v := m["test"]; v != true {
+		t.Fatalf("Unexpected m[\"test\"]: %v", v)
+	}
+}
+
 func BenchmarkPut(b *testing.B) {
 	v := &Object{}