// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Generate test data for trie code.

package main

import (
	"fmt"
)

func main() {
	printTestTables()
}

// We take the smallest, largest and an arbitrary value for each 
// of the UTF-8 sequence lengths.
var testRunes = []int{
	0x01, 0x0C, 0x7F, // 1-byte sequences
	0x80, 0x100, 0x7FF, // 2-byte sequences
	0x800, 0x999, 0xFFFF, // 3-byte sequences
	0x10000, 0x10101, 0x10FFFF, // 4-byte sequences
	0x200, 0x201, 0x202, 0x210, 0x215, // five entries in one sparse block
}

const fileHeader = `// Generated by running
//	maketesttables
// DO NOT EDIT

package norm

`

func printTestTables() {
	fmt.Print(fileHeader)
	fmt.Printf("var testRunes = %#v\n\n", testRunes)
	t := newNode()
	for i, r := range testRunes {
		t.insert(r, uint16(i))
	}
	t.printTables("testdata")
}
