...

Source file src/golang.org/x/text/collate/build/trie_test.go

Documentation: golang.org/x/text/collate/build

     1  // Copyright 2012 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package build
     6  
     7  import (
     8  	"bytes"
     9  	"fmt"
    10  	"testing"
    11  )
    12  
    13  // We take the smallest, largest and an arbitrary value for each
    14  // of the UTF-8 sequence lengths.
    15  var testRunes = []rune{
    16  	0x01, 0x0C, 0x7F, // 1-byte sequences
    17  	0x80, 0x100, 0x7FF, // 2-byte sequences
    18  	0x800, 0x999, 0xFFFF, // 3-byte sequences
    19  	0x10000, 0x10101, 0x10FFFF, // 4-byte sequences
    20  	0x200, 0x201, 0x202, 0x210, 0x215, // five entries in one sparse block
    21  }
    22  
    23  func makeTestTrie(t *testing.T) trie {
    24  	n := newNode()
    25  	for i, r := range testRunes {
    26  		n.insert(r, uint32(i))
    27  	}
    28  	idx := newTrieBuilder()
    29  	idx.addTrie(n)
    30  	tr, err := idx.generate()
    31  	if err != nil {
    32  		t.Errorf(err.Error())
    33  	}
    34  	return *tr
    35  }
    36  
    37  func TestGenerateTrie(t *testing.T) {
    38  	testdata := makeTestTrie(t)
    39  	buf := &bytes.Buffer{}
    40  	testdata.printArrays(buf, "test")
    41  	fmt.Fprintf(buf, "var testTrie = ")
    42  	testdata.printStruct(buf, &trieHandle{19, 0}, "test")
    43  	if output != buf.String() {
    44  		t.Error("output differs")
    45  	}
    46  }
    47  
    48  var output = `// testValues: 832 entries, 3328 bytes
    49  // Block 2 is the null block.
    50  var testValues = [832]uint32 {
    51  	// Block 0x0, offset 0x0
    52  	0x000c:0x00000001, 
    53  	// Block 0x1, offset 0x40
    54  	0x007f:0x00000002, 
    55  	// Block 0x2, offset 0x80
    56  	// Block 0x3, offset 0xc0
    57  	0x00c0:0x00000003, 
    58  	// Block 0x4, offset 0x100
    59  	0x0100:0x00000004, 
    60  	// Block 0x5, offset 0x140
    61  	0x0140:0x0000000c, 0x0141:0x0000000d, 0x0142:0x0000000e, 
    62  	0x0150:0x0000000f, 
    63  	0x0155:0x00000010, 
    64  	// Block 0x6, offset 0x180
    65  	0x01bf:0x00000005, 
    66  	// Block 0x7, offset 0x1c0
    67  	0x01c0:0x00000006, 
    68  	// Block 0x8, offset 0x200
    69  	0x0219:0x00000007, 
    70  	// Block 0x9, offset 0x240
    71  	0x027f:0x00000008, 
    72  	// Block 0xa, offset 0x280
    73  	0x0280:0x00000009, 
    74  	// Block 0xb, offset 0x2c0
    75  	0x02c1:0x0000000a, 
    76  	// Block 0xc, offset 0x300
    77  	0x033f:0x0000000b, 
    78  }
    79  
    80  // testLookup: 640 entries, 1280 bytes
    81  // Block 0 is the null block.
    82  var testLookup = [640]uint16 {
    83  	// Block 0x0, offset 0x0
    84  	// Block 0x1, offset 0x40
    85  	// Block 0x2, offset 0x80
    86  	// Block 0x3, offset 0xc0
    87  	0x0e0:0x05, 0x0e6:0x06, 
    88  	// Block 0x4, offset 0x100
    89  	0x13f:0x07, 
    90  	// Block 0x5, offset 0x140
    91  	0x140:0x08, 0x144:0x09, 
    92  	// Block 0x6, offset 0x180
    93  	0x190:0x03, 
    94  	// Block 0x7, offset 0x1c0
    95  	0x1ff:0x0a, 
    96  	// Block 0x8, offset 0x200
    97  	0x20f:0x05, 
    98  	// Block 0x9, offset 0x240
    99  	0x242:0x01, 0x244:0x02, 
   100  	0x248:0x03, 
   101  	0x25f:0x04, 
   102  	0x260:0x01, 
   103  	0x26f:0x02, 
   104  	0x270:0x04, 0x274:0x06, 
   105  }
   106  
   107  var testTrie = trie{ testLookup[1216:], testValues[0:], testLookup[:], testValues[:]}`
   108  

View as plain text