1* test "sens ac"
2
3i1  0 1  dc=1.27 ac=42mA
4r1  1 0  1k
5c1  1 0  100p
6
7.control
8
9* express our "golden" expectations:
10setplot new
11set gold = $curplot
12let s = (0,2) * pi * 1e6
13let i1_acmag = 1 / (s*100p + 1/1k)
14let r1 = 42mA / (1 + s*100p * 1k)^2
15let c1 = - 42mA * s / (s*100p + 1/1k)^2
16
17* run a "sens" analysis
18sens v(1) ac lin 1 1e6 1.1e6
19
20strcmp __flag $curplot $gold
21if $__flag = 0
22  echo "ERROR: sens failed to execute"
23  quit 1
24end
25
26* compare results with "golden" expectation
27
28define mismatch(a,b,err) abs(a-b)>err*abs(b)
29
30let total_count = 0
31let fail_count = 0
32
33foreach n i1_acmag c1 r1
34  set n_test = "$n"
35  set n_gold = "{$gold}.$n"
36  if mismatch($n_test, $n_gold, 1e-3)
37    let s_test = $n_test
38    let s_gold = $n_gold
39    echo "ERROR, test failure, s[$n] = $&s_test but should be $&s_gold"
40    let fail_count = fail_count + 1
41  end
42  let total_count = total_count + 1
43end
44
45if fail_count > 0
46  echo "ERROR: $&fail_count of $&total_count tests failed"
47  quit 1
48else
49  echo "INFO: $&fail_count of $&total_count tests failed"
50  quit 0
51end
52
53.endc
54
55.end
56