blob: 705bb295a169f68049fe47e5180bfd3332b70cf8 [file] [log] [blame]
// Copyright 2013 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.
// This file checks invariants of token.Token ordering that we rely on
// since package go/token doesn't provide any guarantees at the moment.
package types
import (
"go/token"
"testing"
)
var assignOps = map[token.Token]token.Token{
token.ADD_ASSIGN: token.ADD,
token.SUB_ASSIGN: token.SUB,
token.MUL_ASSIGN: token.MUL,
token.QUO_ASSIGN: token.QUO,
token.REM_ASSIGN: token.REM,
token.AND_ASSIGN: token.AND,
token.OR_ASSIGN: token.OR,
token.XOR_ASSIGN: token.XOR,
token.SHL_ASSIGN: token.SHL,
token.SHR_ASSIGN: token.SHR,
token.AND_NOT_ASSIGN: token.AND_NOT,
}
func TestZeroTok(t *testing.T) {
// zero value for token.Token must be token.ILLEGAL
var zero token.Token
if token.ILLEGAL != zero {
t.Errorf("%s == %d; want 0", token.ILLEGAL, zero)
}
}
func TestAssignOp(t *testing.T) {
// there are fewer than 256 tokens
for i := 0; i < 256; i++ {
tok := token.Token(i)
got := assignOp(tok)
want := assignOps[tok]
if got != want {
t.Errorf("for assignOp(%s): got %s; want %s", tok, got, want)
}
}
}