...

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

Documentation: github.com/clbanning/mxj/v2

     1  // attrprefix_test.go - change attrPrefix var
     2  
     3  package mxj
     4  
     5  import (
     6  	"fmt"
     7  	"testing"
     8  )
     9  
    10  var data = []byte(`
    11  <doc>
    12  	<elem1 attr1="this" attr2="is">a test</elem1>
    13  	<elem2 attr1="this" attr2="is not">a test</elem2>
    14  </doc>
    15  `)
    16  
    17  func TestPrefixDefault(t *testing.T) {
    18  	fmt.Println("----------------- TestPrefixDefault ...")
    19  	m, err := NewMapXml(data)
    20  	if err != nil {
    21  		t.Fatal(err)
    22  	}
    23  	vals, err := m.ValuesForKey("-attr1")
    24  	if err != nil {
    25  		t.Fatal(err)
    26  	}
    27  	if len(vals) != 2 {
    28  		t.Fatal("didn't get 2 -attr1 vals", len(vals))
    29  	}
    30  	vals, err = m.ValuesForKey("-attr2")
    31  	if err != nil {
    32  		t.Fatal(err)
    33  	}
    34  	if len(vals) != 2 {
    35  		t.Fatal("didn't get 2 -attr2 vals", len(vals))
    36  	}
    37  }
    38  
    39  func TestPrefixNoHyphen(t *testing.T) {
    40  	fmt.Println("----------------- TestPrefixNoHyphen ...")
    41  	PrependAttrWithHyphen(false)
    42  	m, err := NewMapXml(data)
    43  	if err != nil {
    44  		t.Fatal(err)
    45  	}
    46  	vals, err := m.ValuesForKey("attr1")
    47  	if err != nil {
    48  		t.Fatal(err)
    49  	}
    50  	if len(vals) != 2 {
    51  		t.Fatal("didn't get 2 attr1 vals", len(vals))
    52  	}
    53  	vals, err = m.ValuesForKey("attr2")
    54  	if err != nil {
    55  		t.Fatal(err)
    56  	}
    57  	if len(vals) != 2 {
    58  		t.Fatal("didn't get 2 attr2 vals", len(vals))
    59  	}
    60  }
    61  
    62  func TestPrefixUnderscore(t *testing.T) {
    63  	fmt.Println("----------------- TestPrefixUnderscore ...")
    64  	SetAttrPrefix("_")
    65  	m, err := NewMapXml(data)
    66  	if err != nil {
    67  		t.Fatal(err)
    68  	}
    69  	vals, err := m.ValuesForKey("_attr1")
    70  	if err != nil {
    71  		t.Fatal(err)
    72  	}
    73  	if len(vals) != 2 {
    74  		t.Fatal("didn't get 2 _attr1 vals", len(vals))
    75  	}
    76  	vals, err = m.ValuesForKey("_attr2")
    77  	if err != nil {
    78  		t.Fatal(err)
    79  	}
    80  	if len(vals) != 2 {
    81  		t.Fatal("didn't get 2 _attr2 vals", len(vals))
    82  	}
    83  }
    84  
    85  func TestPrefixAt(t *testing.T) {
    86  	fmt.Println("----------------- TestPrefixAt ...")
    87  	SetAttrPrefix("@")
    88  	m, err := NewMapXml(data)
    89  	if err != nil {
    90  		t.Fatal(err)
    91  	}
    92  	vals, err := m.ValuesForKey("@attr1")
    93  	if err != nil {
    94  		t.Fatal(err)
    95  	}
    96  	if len(vals) != 2 {
    97  		t.Fatal("didn't get 2 @attr1 vals", len(vals))
    98  	}
    99  	vals, err = m.ValuesForKey("@attr2")
   100  	if err != nil {
   101  		t.Fatal(err)
   102  	}
   103  	if len(vals) != 2 {
   104  		t.Fatal("didn't get 2 @attr2 vals", len(vals))
   105  	}
   106  }
   107  
   108  func TestMarshalPrefixDefault(t *testing.T) {
   109  	fmt.Println("----------------- TestMarshalPrefixDefault ...")
   110  	m, err := NewMapXml(data)
   111  	if err != nil {
   112  		t.Fatal(err)
   113  	}
   114  	x, err := m.XmlIndent("", "  ")
   115  	if err != nil {
   116  		t.Fatal(err)
   117  	}
   118  	fmt.Println(string(x))
   119  }
   120  
   121  func TestMarshalPrefixNoHyphen(t *testing.T) {
   122  	fmt.Println("----------------- TestMarshalPrefixNoHyphen ...")
   123  	// 2021.03.09 - per issue #90, no produces a complex element
   124  	PrependAttrWithHyphen(false)
   125  	m, err := NewMapXml(data)
   126  	if err != nil {
   127  		t.Fatal(err)
   128  	}
   129  	x, err := m.XmlIndent("", "  ")
   130  	if err != nil {
   131  		t.Fatal("error not reported for invalid key label")
   132  	}
   133  	fmt.Println("x:", string(x))
   134  }
   135  
   136  func TestMarshalPrefixUnderscore(t *testing.T) {
   137  	fmt.Println("----------------- TestMarshalPrefixUnderscore ...")
   138  	SetAttrPrefix("_")
   139  	m, err := NewMapXml(data)
   140  	if err != nil {
   141  		t.Fatal(err)
   142  	}
   143  	x, err := m.XmlIndent("", "  ")
   144  	if err != nil {
   145  		t.Fatal(err)
   146  	}
   147  	fmt.Println(string(x))
   148  }
   149  
   150  

View as plain text