// 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) } } }