| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 
 | check scoping of nested .model definitions
* (exec-spice "ngspice -b %s")
* (tests-aux-renumber)
i1  n1001_t 0  dc=-1
i2  n1002_t 0  dc=-1
i3  n1003_t 0  dc=-1
i4  n1004_t 0  dc=-1
i5  n1005_t 0  dc=-1
i6  n1006_t 0  dc=-1
i7  n1007_t 0  dc=-1
x1    n1001_t  sub1
v1_g  n1001_g 0  2k
x2    n1002_t n1003_t n1004_t n1005_t n1006_t n1007_t  sub2
v2_g  n1002_g 0  4k
v3_g  n1003_g 0  1k
v4_g  n1004_g 0  8k
v5_g  n1005_g 0  1k
v6_g  n1006_g 0  8k
v7_g  n1007_g 0  43
.subckt sub1 2
  .model my r r=2k
  r1  2 0  my
.ends
.subckt sub2 3 41a 41b 42a 42b 5
  r2  3 0   my
  x31  41a 41b  sub3
  x32  42a 42b  sub3
  .subckt sub3 4 5
    .model my  r r=8k
    .model any r r=42
    r5  4 0  1k
    r6  5 0  my
  .ends
  .model just r r=43
  r5  5 0  just
.ends
.model my r r=4k
.control
define mismatch(a,b,err) abs(a-b)>err
op
let total_count = 0
let fail_count = 0
let tests = 1001 + vector(7)
foreach n $&tests
  set n_test = "n{$n}_t"
  set n_gold = "n{$n}_g"
  if mismatch(v($n_test), v($n_gold), 1e-9)
    let v_test = v($n_test)
    let v_gold = v($n_gold)
    echo "ERROR, test failure, v($n_test) = $&v_test but should be $&v_gold"
    let fail_count = fail_count + 1
  end
  let total_count = total_count + 1
end
if fail_count > 0
  echo "ERROR: $&fail_count of $&total_count tests failed"
  quit 1
else
  echo "INFO: $&fail_count of $&total_count tests failed"
  quit 0
end
.endc
.end
 |