Skip to content

Commit 1ec290b

Browse files
committed
Interpreter tests: make sure that all our arrays are initialised with NaNs.
1 parent 412d8d4 commit 1ec290b

File tree

5 files changed

+1171
-6
lines changed

5 files changed

+1171
-6
lines changed

tests/bindings/javascript/interpreter.test.js

+20-3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,19 @@ describe("Interpreter tests", () => {
2323
beforeAll(async () => {
2424
libcellml = await loadLibCellML()
2525
})
26+
27+
function expectArray(expectedValues, values) {
28+
expect(expectedValues.length).toBe(values.size())
29+
30+
for (let i = 0; i < expectedValues.length; ++i) {
31+
if (Number.isNaN(expectedValues[i])) {
32+
expect(Number.isNaN(values.get(i))).toBe(true)
33+
} else {
34+
expect(expectedValues[i]).toBe(values.get(i))
35+
}
36+
}
37+
}
38+
2639
test('Checking Interpreter model manipulation.', () => {
2740
const i = new libcellml.Interpreter()
2841
const p = new libcellml.Parser(true)
@@ -40,13 +53,17 @@ describe("Interpreter tests", () => {
4053

4154
expect(i.voi()).toBe(0.0)
4255

43-
expect(i.states().size()).toBe(4)
44-
expect(i.rates().size()).toBe(4)
45-
expect(i.variables().size()).toBe(18)
56+
expectArray([Number.NaN, Number.NaN, Number.NaN, Number.NaN], i.states())
57+
expectArray([Number.NaN, Number.NaN, Number.NaN, Number.NaN], i.rates())
58+
expectArray([Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN], i.variables())
4659

4760
i.initialiseVariables()
4861
i.computeComputedConstants()
4962
i.computeRates()
5063
i.computeVariables()
64+
65+
expectArray([Number.NaN, Number.NaN, Number.NaN, Number.NaN], i.states())
66+
expectArray([Number.NaN, Number.NaN, Number.NaN, Number.NaN], i.rates())
67+
expectArray([Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN, Number.NaN], i.variables())
5168
})
5269
})

tests/bindings/python/test_interpreter.py

+17-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#
22
# Tests the Interpreter class bindings
33
#
4+
import math
45
import unittest
56

67

@@ -12,6 +13,15 @@ def test_create_destroy(self):
1213
x = Interpreter()
1314
del x
1415

16+
def assert_array_equal(self, expected_values, values):
17+
self.assertEqual(len(expected_values), len(values))
18+
19+
for i in range(len(expected_values)):
20+
if math.isnan(expected_values[i]):
21+
self.assertTrue(math.isnan(values[i]))
22+
else:
23+
self.assertEqual(expected_values[i], values[i])
24+
1525
def test_hodgkin_huxley_squid_axon_model_1952(self):
1626
from libcellml import Analyser
1727
from libcellml import AnalyserModel
@@ -39,15 +49,19 @@ def test_hodgkin_huxley_squid_axon_model_1952(self):
3949

4050
self.assertEqual(0.0, i.voi())
4151

42-
self.assertEqual(4, len(i.states()))
43-
self.assertEqual(4, len(i.rates()))
44-
self.assertEqual(18, len(i.variables()))
52+
self.assert_array_equal([math.nan, math.nan, math.nan, math.nan], i.states())
53+
self.assert_array_equal([math.nan, math.nan, math.nan, math.nan], i.rates())
54+
self.assert_array_equal([math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan], i.variables())
4555

4656
i.initialiseVariables()
4757
i.computeComputedConstants()
4858
i.computeRates()
4959
i.computeVariables()
5060

61+
self.assert_array_equal([math.nan, math.nan, math.nan, math.nan], i.states())
62+
self.assert_array_equal([math.nan, math.nan, math.nan, math.nan], i.rates())
63+
self.assert_array_equal([math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan, math.nan], i.variables())
64+
5165

5266
if __name__ == '__main__':
5367
unittest.main()

0 commit comments

Comments
 (0)