Generated on Tue Apr 18 10:22:17 2017 for Gecode by doxygen 1.6.3

test_fzn_comparison.cpp

Go to the documentation of this file.
00001 /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
00002 /*
00003  *  Main authors:
00004  *     Guido Tack <tack@gecode.org>
00005  *
00006  *  Copyright:
00007  *     Guido Tack, 2014
00008  *
00009  *  Last modified:
00010  *     $Date: 2014-11-04 13:28:32 +0100 (Tue, 04 Nov 2014) $ by $Author: schulte $
00011  *     $Revision: 14287 $
00012  *
00013  *  This file is part of Gecode, the generic constraint
00014  *  development environment:
00015  *     http://www.gecode.org
00016  *
00017  *  Permission is hereby granted, free of charge, to any person obtaining
00018  *  a copy of this software and associated documentation files (the
00019  *  "Software"), to deal in the Software without restriction, including
00020  *  without limitation the rights to use, copy, modify, merge, publish,
00021  *  distribute, sublicense, and/or sell copies of the Software, and to
00022  *  permit persons to whom the Software is furnished to do so, subject to
00023  *  the following conditions:
00024  *
00025  *  The above copyright notice and this permission notice shall be
00026  *  included in all copies or substantial portions of the Software.
00027  *
00028  *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
00029  *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
00030  *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
00031  *  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
00032  *  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
00033  *  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
00034  *  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00035  *
00036  */
00037 
00038 #include "test/flatzinc.hh"
00039 
00040 namespace Test { namespace FlatZinc {
00041 
00042   namespace {
00044     class Create {
00045     public:
00046 
00048       Create(void) {
00049         (void) new FlatZincTest("fzn_comparison",
00050 "var bool: b1;\n\
00051 var bool: b2;\n\
00052 var bool: b3;\n\
00053 var bool: b4;\n\
00054 var bool: b5;\n\
00055 var bool: b6;\n\
00056 \n\
00057 var bool: rb1;\n\
00058 var bool: rb2;\n\
00059 var bool: rb3;\n\
00060 var bool: rb4;\n\
00061 var bool: rb5;\n\
00062 var bool: rb6;\n\
00063 \n\
00064 var 1.0..10.0: f1;\n\
00065 var 1.0..10.0: f2;\n\
00066 var 1.0..10.0: f3;\n\
00067 var 1.0..10.0: f4;\n\
00068 var 1.0..10.0: f5;\n\
00069 var 1.0..10.0: f6;\n\
00070 \n\
00071 var bool: rf1;\n\
00072 var bool: rf2;\n\
00073 var bool: rf3;\n\
00074 var bool: rf4;\n\
00075 var bool: rf5;\n\
00076 var bool: rf6;\n\
00077 \n\
00078 var 1..10: i1;\n\
00079 var 1..10: i2;\n\
00080 var 1..10: i3;\n\
00081 var 1..10: i4;\n\
00082 var 1..10: i5;\n\
00083 var 1..10: i6;\n\
00084 \n\
00085 var bool: ri1;\n\
00086 var bool: ri2;\n\
00087 var bool: ri3;\n\
00088 var bool: ri4;\n\
00089 var bool: ri5;\n\
00090 var bool: ri6;\n\
00091 \n\
00092 array [1..3] of var 1.0..10.0: fa1;\n\
00093 array [1..3] of var 1.0..10.0: fa2;\n\
00094 array [1..3] of var 1.0..10.0: fa3;\n\
00095 array [1..3] of var 1.0..10.0: fa4;\n\
00096 array [1..3] of var 1.0..10.0: fa5;\n\
00097 \n\
00098 var bool: rfa1;\n\
00099 var bool: rfa2;\n\
00100 var bool: rfa3;\n\
00101 var bool: rfa4;\n\
00102 var bool: rfa5;\n\
00103 \n\
00104 array [1..3] of var 1..10: ia1;\n\
00105 array [1..3] of var 1..10: ia2;\n\
00106 array [1..3] of var 1..10: ia3;\n\
00107 array [1..3] of var 1..10: ia4;\n\
00108 array [1..3] of var 1..10: ia5;\n\
00109 \n\
00110 var bool: ria1;\n\
00111 var bool: ria2;\n\
00112 var bool: ria3;\n\
00113 var bool: ria4;\n\
00114 var bool: ria5;\n\
00115 \n\
00116 var set of 1..3: s1;\n\
00117 var set of 1..3: s2;\n\
00118 var set of 1..3: s3;\n\
00119 var set of 1..3: s4;\n\
00120 var set of 1..3: s5;\n\
00121 var set of 1..3: s6;\n\
00122 \n\
00123 var bool: rs1;\n\
00124 var bool: rs2;\n\
00125 var bool: rs3;\n\
00126 var bool: rs4;\n\
00127 var bool: rs5;\n\
00128 var bool: rs6;\n\
00129 \n\
00130 % int_{lt,le,eq,ne}\n\
00131 \n\
00132 constraint int_lt(2, 3);\n\
00133 constraint int_lt(2, i1);\n\
00134 constraint int_lt(i1, 9);\n\
00135 \n\
00136 constraint int_le(2, 3);\n\
00137 constraint int_le(2, i2);\n\
00138 constraint int_le(i2, 9);\n\
00139 \n\
00140 constraint int_le(2, i3);\n\
00141 constraint int_le(i3, 9);\n\
00142 \n\
00143 constraint int_lt(2, i4);\n\
00144 constraint int_lt(i4, 9);\n\
00145 \n\
00146 constraint int_eq(2, 2);\n\
00147 constraint int_eq(2, i5);\n\
00148 \n\
00149 constraint int_ne(2, 3);\n\
00150 constraint int_ne(1, i6);\n\
00151 \n\
00152 % int_{lt,le,eq,ne}_reif\n\
00153 \n\
00154 constraint int_lt_reif(2, 3, ri1);\n\
00155 constraint int_lt_reif(2, i1, ri1);\n\
00156 constraint int_lt_reif(i1, 9, ri1);\n\
00157 \n\
00158 constraint int_le_reif(2, 3, ri2);\n\
00159 constraint int_le_reif(2, i2, ri2);\n\
00160 constraint int_le_reif(i2, 9, ri2);\n\
00161 \n\
00162 constraint int_le_reif(2, 3, ri3);\n\
00163 constraint int_le_reif(2, i3, ri3);\n\
00164 constraint int_le_reif(i3, 9, ri3);\n\
00165 \n\
00166 constraint int_lt_reif(2, 3, ri4);\n\
00167 constraint int_lt_reif(2, i4, ri4);\n\
00168 constraint int_lt_reif(i4, 9, ri4);\n\
00169 \n\
00170 constraint int_eq_reif(2, 2, ri5);\n\
00171 constraint int_eq_reif(2, i5, ri5);\n\
00172 \n\
00173 constraint int_ne_reif(2, 3, ri6);\n\
00174 constraint int_ne_reif(1, i6, ri6);\n\
00175 \n\
00176 % float_{lt,le,ge,gt,eq,ne}\n\
00177 \n\
00178 % constraint float_lt(2.0, 3.0);\n\
00179 % constraint float_lt(2.0, f1);\n\
00180 % constraint float_lt(f1, 9.0);\n\
00181 \n\
00182 constraint float_le(2.0, 3.0);\n\
00183 constraint float_le(2.0, f2);\n\
00184 constraint float_le(f2, 9.0);\n\
00185 \n\
00186 constraint float_le(2.0, f3);\n\
00187 constraint float_le(f3, 9.0);\n\
00188 \n\
00189 constraint float_eq(2.0, 2.0);\n\
00190 constraint float_eq(2.0, f5);\n\
00191 \n\
00192 % constraint float_ne(2.0, 3.0);\n\
00193 % constraint float_ne(2.0, f6);\n\
00194 \n\
00195 % float_{lt,le,eq,ne}_reif\n\
00196 \n\
00197 % constraint float_lt_reif(2.0, 3.0, rf1);\n\
00198 % constraint float_lt_reif(2.0, f1, rf1);\n\
00199 % constraint float_lt_reif(f1, 9.0, rf1);\n\
00200 \n\
00201 constraint float_le_reif(2.0, 3.0, rf2);\n\
00202 constraint float_le_reif(2.0, f2, rf2);\n\
00203 constraint float_le_reif(f2, 9.0, rf2);\n\
00204 \n\
00205 constraint float_le_reif(2.0, 3.0, rf3);\n\
00206 constraint float_le_reif(2.0, f3, rf3);\n\
00207 constraint float_le_reif(f3, 9.0, rf3);\n\
00208 \n\
00209 constraint float_eq_reif(2.0, 2.0, rf5);\n\
00210 constraint float_eq_reif(2.0, f5, rf5);\n\
00211 \n\
00212 % constraint float_ne_reif(2.0, 3.0, rf6);\n\
00213 % constraint float_ne_reif(2.0, f6, rf6);\n\
00214 \n\
00215 % set_{lt,le,gt,ge,eq,ne}\n\
00216 \n\
00217 constraint set_lt({}, {1, 2, 3});\n\
00218 constraint set_lt({}, s1);\n\
00219 constraint set_lt(s1, {1, 2, 3});\n\
00220 \n\
00221 constraint set_le({}, {1, 2, 3});\n\
00222 constraint set_le({1}, s2);\n\
00223 constraint set_le(s2, {1, 2, 3});\n\
00224 \n\
00225 constraint set_lt({}, {1, 2, 3});\n\
00226 constraint set_lt({}, s3);\n\
00227 constraint set_lt(s3, {1, 2, 3});\n\
00228 \n\
00229 constraint set_le({}, {1, 2, 3});\n\
00230 constraint set_le({1}, s4);\n\
00231 constraint set_le(s4, {1, 2, 3});\n\
00232 \n\
00233 constraint set_eq({1, 2, 3}, {1, 2, 3});\n\
00234 constraint set_eq(s5, {1, 2, 3});\n\
00235 \n\
00236 constraint set_ne({}, {1, 2, 3});\n\
00237 constraint set_ne(s6, {1, 2, 3});\n\
00238 \n\
00239 % int_lin_{lt,le,gt,ge,eq}\n\
00240 \n\
00241 % constraint int_lin_lt([1, 2, 3], [1, 2, 3], 100);\n\
00242 % constraint int_lin_lt([1, 2, 3], ia1, 10);\n\
00243 \n\
00244 constraint int_lin_le([1, 2, 3], [1, 2, 3], 100);\n\
00245 constraint int_lin_le([1, 2, 3], ia2, 10);\n\
00246 \n\
00247 % constraint int_lin_gt([1, 2, 3], [1, 2, 3], 10);\n\
00248 % constraint int_lin_gt([1, 2, 3], ia3, 10);\n\
00249 \n\
00250 constraint int_lin_le([-1, -2, -3], [1, 2, 3], -10);\n\
00251 constraint int_lin_le([-1, -2, -3], ia4, -10);\n\
00252 \n\
00253 constraint int_lin_eq([1, 2, 3], [1, 2, 3], 14);\n\
00254 constraint int_lin_eq([1, 2, 3], ia5, 14);\n\
00255 \n\
00256 % int_lin_{lt,le,gt,ge,eq}_reif\n\
00257 \n\
00258 % constraint int_lin_lt_reif([1, 2, 3], [1, 2, 3], 100, ria1);\n\
00259 % constraint int_lin_lt_reif([1, 2, 3], ia1, 10, ria1);\n\
00260 \n\
00261 constraint int_lin_le_reif([1, 2, 3], [1, 2, 3], 100, ria2);\n\
00262 constraint int_lin_le_reif([1, 2, 3], ia2, 10, ria2);\n\
00263 \n\
00264 % constraint int_lin_gt_reif([1, 2, 3], [1, 2, 3], 10, ria3);\n\
00265 % constraint int_lin_gt_reif([1, 2, 3], ia3, 10, ria3);\n\
00266 \n\
00267 constraint int_lin_le_reif([-1, -2, -3], [1, 2, 3], -10, ria4);\n\
00268 constraint int_lin_le_reif([-1, -2, -3], ia4, -10, ria4);\n\
00269 \n\
00270 constraint int_lin_eq_reif([1, 2, 3], [1, 2, 3], 14, ria5);\n\
00271 constraint int_lin_eq_reif([1, 2, 3], ia5, 14, ria5);\n\
00272 \n\
00273 solve satisfy;\n\
00274 ",
00275 "----------\n");
00276       }
00277     };
00278 
00279     Create c;
00280   }
00281 
00282 }}
00283 
00284 // STATISTICS: test-flatzinc