...

Source file src/github.com/clbanning/mxj/v2/set_test.go

Documentation: github.com/clbanning/mxj/v2

     1  package mxj
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  func TestSetValueForPath(t *testing.T) {
     8  	m := map[string]interface{}{
     9  		"Div": map[string]interface{}{
    10  			"Colour": "blue",
    11  			"Font": map[string]interface{}{
    12  				"Family": "sans",
    13  			},
    14  		},
    15  	}
    16  	mv := Map(m)
    17  
    18  	// testing setting a new key
    19  	err := mv.SetValueForPath("big", "Div.Font.Size")
    20  	if err != nil {
    21  		t.Fatal(err)
    22  	}
    23  	val, err := mv.ValueForPathString("Div.Font.Size")
    24  	if err != nil {
    25  		t.Fatal(err)
    26  	}
    27  	if val != "big" {
    28  		t.Fatal("key's value hasn't changed")
    29  	}
    30  
    31  	// testing setting a new value to en existing key
    32  	err = mv.SetValueForPath("red", "Div.Colour")
    33  	if err != nil {
    34  		t.Fatal(err)
    35  	}
    36  	val, err = mv.ValueForPathString("Div.Colour")
    37  	if err != nil {
    38  		t.Fatal(err)
    39  	}
    40  	if val != "red" {
    41  		t.Fatal("existig key's value hasn't changed")
    42  	}
    43  }
    44  

View as plain text