blob: 6916135b62b583f0f3aa716c43ba8ff8cdffe9c9 [file] [log] [blame]
Marcel van Lohuizend96ad3d2018-12-10 15:30:20 +01001// Copyright 2018 The CUE Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// This file contains test cases for short valid and invalid programs.
16
17package parser
18
19import "testing"
20
21var valids = []string{
22 "\n",
23 `{}`,
Marcel van Lohuizend96ad3d2018-12-10 15:30:20 +010024 `{ <Name>: foo }`,
25 `{ a: 3 }`,
26}
27
28func TestValid(t *testing.T) {
29 for _, src := range valids {
30 t.Run(src, func(t *testing.T) {
31 checkErrors(t, src, src)
32 })
33 }
34}
35
36func TestInvalid(t *testing.T) {
37 invalids := []string{
38 `foo !/* ERROR "expected label or ':', found '!'" */`,
39 // `foo: /* ERROR "expected operand, found '}'" */}`, // TODO: wrong position
40 `{ <Name
41 /* ERROR "expected '>', found newline" */ >: foo }`,
42 // TODO:
43 // `{ </* ERROR "expected identifier, found newline" */
44 // Name>: foo }`,
45 }
46 for _, src := range invalids {
47 checkErrors(t, src, src)
48 }
49}