# generated from the original tests.
# Henceforth it may be nicer to group tests into separate files.
-- in.cue --
import "struct"

t1: struct.MinFields(0) & ""
t2: struct.MinFields(0) & {a: 1}
t3: struct.MinFields(2) & {a: 1}
t4: struct.MaxFields(0) & {a: 1}
t5: struct.MaxFields(2) & {a: 1}
-- out/structs --
Errors:
t1: conflicting values struct.MinFields(0) and "" (mismatched types struct and string):
    ./in.cue:3:5
    ./in.cue:3:27
t3: invalid value {a:1} (does not satisfy struct.MinFields(2)):
    ./in.cue:5:5
t4: invalid value {a:1} (does not satisfy struct.MaxFields(0)):
    ./in.cue:6:5

Result:
(_|_){
  // [eval]
  t1: (_|_){
    // [eval] t1: conflicting values struct.MinFields(0) and "" (mismatched types struct and string):
    //     ./in.cue:3:5
    //     ./in.cue:3:27
  }
  t2: (struct){
    a: (int){ 1 }
  }
  t3: (_|_){
    // [eval] t3: invalid value {a:1} (does not satisfy struct.MinFields(2)):
    //     ./in.cue:5:5
    a: (int){ 1 }
  }
  t4: (_|_){
    // [eval] t4: invalid value {a:1} (does not satisfy struct.MaxFields(0)):
    //     ./in.cue:6:5
    a: (int){ 1 }
  }
  t5: (struct){
    a: (int){ 1 }
  }
}
