File: gsl_test2.rb

package info (click to toggle)
ruby-gsl 1.14.7%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 5,116 kB
  • sloc: ansic: 62,186; ruby: 17,804; makefile: 18; sh: 15
file content (107 lines) | stat: -rwxr-xr-x 2,919 bytes parent folder | download | duplicates (3)
1
2
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/usr/bin/env ruby
require("gsl")
include GSL

module GSL
  module Test
    Verbose = true
    $tests = 0
    $passed = 0
    $failed = 0

# PASS if status == 0, FAIL otherwise
    def test(status, desc)
      $tests += 1
      if status == 0
        $passed += 1
        printf("PASS: #{desc}\n")
      else
        $failed += 1
        printf("FAIL: #{desc}\n")
      end
    end

# PASS if status == true, FAIL otherwise
    def test2(status, desc)
      if status == true
        printf("PASS: #{desc}\n")
      else
        printf("FAIL: #{desc}\n")
      end
    end

    def test_factor(result, expected, factor, desc)
      status = nil
      if result == expected
        status = 0
      elsif expected == 0.0
        status = (result > expected or result < expected) ? 1 : 0
      else
        u = result/expected
        status = (u > factor or u < 1.0/factor) ? 1 : 0
      end
      $tests += 1
      if status == 0
        $passed += 1
        printf("PASS: #{desc} (%g observed vs %g expected)\n", result, expected) 
      else
        $failed += 1
        printf("FAIL: #{desc} (%.18g observed vs %.18g expected)\n", result, expected) 
      end
    end

    def test_rel(result, expected, relerr, desc)
      status = nil
      if isnan?(result) or isnan?(expected)
        status = isnan?(result) != isnan?(expected) ? 1 : 0
      elsif isinf?(result) or isinf?(expected)
        status = isinf?(result) != isinf?(expected) ? 1 : 0
      elsif expected.to_f != 0.0
        status = (result - expected).abs/expected.abs > relerr ? 1 : 0
      else
        status = result.abs > relerr ? 1 : 0
      end
      $tests += 1
      if status == 0
        $passed += 1
        printf("PASS: #{desc} (%g observed vs %g expected)\n", result, expected) 
      else
        $failed += 1
        printf("FAIL: #{desc} (%.18g observed vs %.18g expected)\n", result, expected) 
      end
    end

    def test_abs(result, expected, abserr, desc)
      status = nil
      if isnan?(result) or isnan?(expected)
        status = isnan?(result) != isnan?(expected) ? 1 : 0
      elsif isinf?(result) or isinf?(expected)
        status = isinf?(result) != isinf?(expected) ? 1 : 0
      else
        status = (result - expected).abs > abserr ? 1 : 0
      end
      $tests += 1
      if status == 0
        $passed += 1
        printf("PASS: #{desc} (%g observed vs %g expected)\n", result, expected) 
      else
        $failed += 1
        printf("FAIL: #{desc} (%.18g observed vs %.18g expected)\n", result, expected) 
      end      
    end

    def test_int(result, expected, desc)
      status = (result != expected) ? 1 : 0
      $tests += 1
      if status == 0
        $passed += 1
        printf("PASS: #{desc} (%d observed vs %d expected)\n", result, expected) 
      else
        $failed += 1
        printf("FAIL: #{desc} (%d observed vs %d expected)\n", result, expected) 
      end
    end

  end
end