def test_method(self): class Init(object): def a_init(self, m): return 0 def x_init(self, m, i): return i+1 def x2_init(self, m): return 0 def y_init(self, m, i, j): return j*(i+1) init = Init() m = ConcreteModel() a = Initializer(init.a_init) self.assertIs(type(a), ScalarCallInitializer) self.assertTrue(a.constant()) self.assertFalse(a.verified) self.assertFalse(a.contains_indices()) self.assertEqual(a(None, 1), 0) m.x = Var([1,2,3]) a = Initializer(init.x_init) self.assertIs(type(a), IndexedCallInitializer) self.assertFalse(a.constant()) self.assertFalse(a.verified) self.assertFalse(a.contains_indices()) self.assertEqual(a(None, 1), 2) a = Initializer(init.x2_init) self.assertIs(type(a), ScalarCallInitializer) self.assertTrue(a.constant()) self.assertFalse(a.verified) self.assertFalse(a.contains_indices()) self.assertEqual(a(None, 1), 0) m.y = Var([1,2,3], [4,5,6]) a = Initializer(init.y_init) self.assertIs(type(a), IndexedCallInitializer) self.assertFalse(a.constant()) self.assertFalse(a.verified) self.assertFalse(a.contains_indices()) self.assertEqual(a(None, (1, 4)), 8) b = CountedCallInitializer(m.x, a) self.assertIs(type(b), CountedCallInitializer) self.assertFalse(b.constant()) self.assertFalse(b.verified) self.assertFalse(a.contains_indices()) self.assertFalse(b._scalar) self.assertIs(a._fcn, b._fcn) c = b(None, 1) self.assertIs(type(c), CountedCallGenerator) self.assertEqual(next(c), 2) self.assertEqual(next(c), 3) self.assertEqual(next(c), 4)
def test_function(self): m = ConcreteModel() def a_init(m): return 0 a = Initializer(a_init) self.assertIs(type(a), ScalarCallInitializer) self.assertFalse(a.constant()) self.assertFalse(a.verified) self.assertFalse(a.contains_indices()) self.assertEqual(a(None, 1), 0) m.x = Var([1, 2, 3]) def x_init(m, i): return i + 1 a = Initializer(x_init) self.assertIs(type(a), IndexedCallInitializer) self.assertFalse(a.constant()) self.assertFalse(a.verified) self.assertFalse(a.contains_indices()) self.assertEqual(a(None, 1), 2) def x2_init(m): return 0 a = Initializer(x2_init) self.assertIs(type(a), ScalarCallInitializer) self.assertFalse(a.constant()) self.assertFalse(a.verified) self.assertFalse(a.contains_indices()) self.assertEqual(a(None, 1), 0) m.y = Var([1, 2, 3], [4, 5, 6]) def y_init(m, i, j): return j * (i + 1) a = Initializer(y_init) self.assertIs(type(a), IndexedCallInitializer) self.assertFalse(a.constant()) self.assertFalse(a.verified) self.assertFalse(a.contains_indices()) self.assertEqual(a(None, (1, 4)), 8) b = CountedCallInitializer(m.x, a) self.assertIs(type(b), CountedCallInitializer) self.assertFalse(b.constant()) self.assertFalse(b.verified) self.assertFalse(a.contains_indices()) self.assertFalse(b._scalar) self.assertIs(a._fcn, b._fcn) c = b(None, 1) self.assertIs(type(c), CountedCallGenerator) self.assertEqual(next(c), 2) self.assertEqual(next(c), 3) self.assertEqual(next(c), 4)