-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy path_test_var_ode_sys.py
69 lines (49 loc) · 2.27 KB
/
_test_var_ode_sys.py
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
# Copyright 2020-2025 Francesco Biscani ([email protected]), Dario Izzo ([email protected])
#
# This file is part of the heyoka.py library.
#
# This Source Code Form is subject to the terms of the Mozilla
# Public License v. 2.0. If a copy of the MPL was not distributed
# with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
import unittest as _ut
class var_ode_sys_test_case(_ut.TestCase):
def test_enum(self):
from . import var_args
self.assertEqual(var_args.vars | var_args.time | var_args.params, var_args.all)
self.assertTrue((var_args.vars | var_args.time) & var_args.time)
def test_basic(self):
from . import make_vars, var_ode_sys, var_args, sin, par, time
from copy import copy, deepcopy
from pickle import dumps, loads
x, v = make_vars("x", "v")
orig_sys = [(x, v), (v, -par[0] * sin(x) + time)]
vsys = var_ode_sys(orig_sys, var_args.vars)
self.assertEqual(orig_sys, vsys.sys[:2])
self.assertEqual(vsys.vargs, [x, v])
self.assertEqual(vsys.n_orig_sv, 2)
self.assertEqual(vsys.order, 1)
vsys = var_ode_sys(sys=orig_sys, args=[v, time, x], order=2)
self.assertEqual(orig_sys, vsys.sys[:2])
self.assertEqual(vsys.vargs, [v, time, x])
self.assertEqual(vsys.n_orig_sv, 2)
self.assertEqual(vsys.order, 2)
vsys = var_ode_sys(orig_sys, var_args.vars | var_args.params)
self.assertEqual(orig_sys, vsys.sys[:2])
self.assertEqual(vsys.vargs, [x, v, par[0]])
self.assertEqual(vsys.n_orig_sv, 2)
self.assertEqual(vsys.order, 1)
vsys2 = copy(vsys)
self.assertEqual(orig_sys, vsys2.sys[:2])
self.assertEqual(vsys2.vargs, [x, v, par[0]])
self.assertEqual(vsys2.n_orig_sv, 2)
self.assertEqual(vsys2.order, 1)
vsys2 = deepcopy(vsys)
self.assertEqual(orig_sys, vsys2.sys[:2])
self.assertEqual(vsys2.vargs, [x, v, par[0]])
self.assertEqual(vsys2.n_orig_sv, 2)
self.assertEqual(vsys2.order, 1)
vsys2 = loads(dumps(vsys))
self.assertEqual(orig_sys, vsys2.sys[:2])
self.assertEqual(vsys2.vargs, [x, v, par[0]])
self.assertEqual(vsys2.n_orig_sv, 2)
self.assertEqual(vsys2.order, 1)