github.com/aavshr/aws-sdk-go@v1.41.3/internal/ini/parse_stack_test.go (about) 1 //go:build go1.7 2 // +build go1.7 3 4 package ini 5 6 import ( 7 "reflect" 8 "testing" 9 ) 10 11 func newMockAST(v []rune) AST { 12 return newASTWithRootToken(ASTKindNone, Token{raw: v}) 13 } 14 15 func TestStack(t *testing.T) { 16 cases := []struct { 17 asts []AST 18 expected []AST 19 }{ 20 { 21 asts: []AST{ 22 newMockAST([]rune("0")), 23 newMockAST([]rune("1")), 24 newMockAST([]rune("2")), 25 newMockAST([]rune("3")), 26 newMockAST([]rune("4")), 27 }, 28 expected: []AST{ 29 newMockAST([]rune("0")), 30 newMockAST([]rune("1")), 31 newMockAST([]rune("2")), 32 newMockAST([]rune("3")), 33 newMockAST([]rune("4")), 34 }, 35 }, 36 } 37 38 for _, c := range cases { 39 p := newParseStack(10, 10) 40 for _, ast := range c.asts { 41 p.Push(ast) 42 p.MarkComplete(ast) 43 } 44 45 if e, a := len(c.expected), p.Len(); e != a { 46 t.Errorf("expected the same legnth with %d, but received %d", e, a) 47 } 48 for i := len(c.expected) - 1; i >= 0; i-- { 49 if e, a := c.expected[i], p.Pop(); !reflect.DeepEqual(e, a) { 50 t.Errorf("stack element %d invalid: expected %v, but received %v", i, e, a) 51 } 52 } 53 54 if e, a := len(c.expected), p.index; e != a { 55 t.Errorf("expected %d, but received %d", e, a) 56 } 57 58 if e, a := c.asts, p.list[:p.index]; !reflect.DeepEqual(e, a) { 59 t.Errorf("expected %v, but received %v", e, a) 60 } 61 } 62 }