@@ -79,6 +79,89 @@ def test_model():
7979 assert s .getStatus () == 'unbounded'
8080
8181
82+ def test_multiple_cons_simple ():
83+ def assert_conss_eq (a , b ):
84+ assert a .name == b .name
85+ assert a .isInitial () == b .isInitial ()
86+ assert a .isSeparated () == b .isSeparated ()
87+ assert a .isEnforced () == b .isEnforced ()
88+ assert a .isChecked () == b .isChecked ()
89+ assert a .isPropagated () == b .isPropagated ()
90+ assert a .isLocal () == b .isLocal ()
91+ assert a .isModifiable () == b .isModifiable ()
92+ assert a .isDynamic () == b .isDynamic ()
93+ assert a .isRemovable () == b .isRemovable ()
94+ assert a .isStickingAtNode () == b .isStickingAtNode ()
95+
96+ s = Model ()
97+ s_x = s .addVar ("x" , vtype = 'C' , obj = 1.0 )
98+ s_y = s .addVar ("y" , vtype = 'C' , obj = 2.0 )
99+ s_cons = s .addCons (s_x + 2 * s_y <= 1.0 )
100+
101+ m = Model ()
102+ m_x = m .addVar ("x" , vtype = 'C' , obj = 1.0 )
103+ m_y = m .addVar ("y" , vtype = 'C' , obj = 2.0 )
104+ m_conss = m .addConss ([m_x + 2 * m_y <= 1.0 ])
105+
106+ assert len (m_conss ) == 1
107+ assert_conss_eq (s_cons , m_conss [0 ])
108+
109+ s .freeProb ()
110+ m .freeProb ()
111+
112+
113+ def test_multiple_cons_names ():
114+ m = Model ()
115+ x = m .addVar ("x" , vtype = 'C' , obj = 1.0 )
116+ y = m .addVar ("y" , vtype = 'C' , obj = 2.0 )
117+
118+ names = list ("abcdef" )
119+ conss = m .addConss ([x + 2 * y <= 1 for i in range (len (names ))], names )
120+
121+ assert len (conss ) == len (names )
122+ assert all ([c .name == n for c , n in zip (conss , names )])
123+
124+ m .freeProb ()
125+
126+ m = Model ()
127+ x = m .addVar ("x" , vtype = 'C' , obj = 1.0 )
128+ y = m .addVar ("y" , vtype = 'C' , obj = 2.0 )
129+
130+ name = "abcdef"
131+ conss = m .addConss ([x + 2 * y <= 1 for i in range (5 )], name )
132+
133+ assert len (conss ) == 5
134+ assert all ([c .name .startswith (name + "_" ) for c in conss ])
135+
136+
137+ def test_multiple_cons_params ():
138+ """Test if setting the remaining parameters works as expected"""
139+ def assert_conss_neq (a , b ):
140+ assert a .isInitial () != b .isInitial ()
141+ assert a .isSeparated () != b .isSeparated ()
142+ assert a .isEnforced () != b .isEnforced ()
143+ assert a .isChecked () != b .isChecked ()
144+ assert a .isPropagated () != b .isPropagated ()
145+ assert a .isModifiable () != b .isModifiable ()
146+ assert a .isDynamic () != b .isDynamic ()
147+ assert a .isRemovable () != b .isRemovable ()
148+ assert a .isStickingAtNode () != b .isStickingAtNode ()
149+
150+ kwargs = dict (initial = True , separate = True ,
151+ enforce = True , check = True , propagate = True , local = False ,
152+ modifiable = False , dynamic = False , removable = False ,
153+ stickingatnode = False )
154+
155+ m = Model ()
156+ x = m .addVar ("x" , vtype = 'C' , obj = 1.0 )
157+ y = m .addVar ("y" , vtype = 'C' , obj = 2.0 )
158+
159+ conss = m .addConss ([x + 2 * y <= 1 ], ** kwargs )
160+ conss += m .addConss ([x + 2 * y <= 1 ], ** {k : not v for k , v in kwargs .items ()})
161+
162+ assert_conss_neq (conss [0 ], conss [1 ])
163+
164+
82165def test_model_ptr ():
83166 model1 = Model ()
84167 ptr1 = model1 .to_ptr (give_ownership = True )
0 commit comments