@@ -79,6 +79,89 @@ def test_model():
79
79
assert s .getStatus () == 'unbounded'
80
80
81
81
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
+
82
165
def test_model_ptr ():
83
166
model1 = Model ()
84
167
ptr1 = model1 .to_ptr (give_ownership = True )
0 commit comments