gecoder-with-gecode 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +81 -0
- data/COPYING +17 -0
- data/LGPL-LICENSE +458 -0
- data/README +45 -0
- data/Rakefile +13 -0
- data/example/example_helper.rb +1 -0
- data/example/magic_sequence.rb +43 -0
- data/example/queens.rb +43 -0
- data/example/raw_bindings.rb +42 -0
- data/example/send_more_money.rb +43 -0
- data/example/send_most_money.rb +58 -0
- data/example/square_tiling.rb +84 -0
- data/example/sudoku-set.rb +110 -0
- data/example/sudoku.rb +61 -0
- data/ext/extconf.rb +29 -0
- data/ext/gecode-1.3.1/LICENSE +34 -0
- data/ext/gecode-1.3.1/Makefile.contribs +71 -0
- data/ext/gecode-1.3.1/Makefile.dep +3928 -0
- data/ext/gecode-1.3.1/Makefile.in +966 -0
- data/ext/gecode-1.3.1/changelog.in +1065 -0
- data/ext/gecode-1.3.1/configure +8590 -0
- data/ext/gecode-1.3.1/configure.ac +179 -0
- data/ext/gecode-1.3.1/configure.ac.in +175 -0
- data/ext/gecode-1.3.1/contribs/README +26 -0
- data/ext/gecode-1.3.1/contribs/graph/INSTALL +53 -0
- data/ext/gecode-1.3.1/contribs/graph/LICENSE +11 -0
- data/ext/gecode-1.3.1/contribs/graph/Makefile +167 -0
- data/ext/gecode-1.3.1/contribs/graph/Makefile.in.in +169 -0
- data/ext/gecode-1.3.1/contribs/graph/TODO +28 -0
- data/ext/gecode-1.3.1/contribs/graph/binarysimple.hh +82 -0
- data/ext/gecode-1.3.1/contribs/graph/binarysimple.icc +186 -0
- data/ext/gecode-1.3.1/contribs/graph/branch/branch.icc +257 -0
- data/ext/gecode-1.3.1/contribs/graph/configure +2160 -0
- data/ext/gecode-1.3.1/contribs/graph/configure.ac +33 -0
- data/ext/gecode-1.3.1/contribs/graph/doxygen.conf +1226 -0
- data/ext/gecode-1.3.1/contribs/graph/doxygen.hh +132 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-basic.cc +94 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-complement.cc +104 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-instUB.cc +105 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-path.cc +92 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-path2.cc +273 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-pathcost.cc +311 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/g1.txt +1 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/g2.txt +1 -0
- data/ext/gecode-1.3.1/contribs/graph/graph.hh +51 -0
- data/ext/gecode-1.3.1/contribs/graph/graphutils.h +46 -0
- data/ext/gecode-1.3.1/contribs/graph/graphutils.icc +140 -0
- data/ext/gecode-1.3.1/contribs/graph/misc/doxygen/footer.html +1 -0
- data/ext/gecode-1.3.1/contribs/graph/path.hh +116 -0
- data/ext/gecode-1.3.1/contribs/graph/path.icc +64 -0
- data/ext/gecode-1.3.1/contribs/graph/path/path.icc +139 -0
- data/ext/gecode-1.3.1/contribs/graph/path/pathdegree.icc +133 -0
- data/ext/gecode-1.3.1/contribs/graph/path/pathgraphs.icc +341 -0
- data/ext/gecode-1.3.1/contribs/graph/shortdesc.ac +1 -0
- data/ext/gecode-1.3.1/contribs/graph/stlutility.icc +105 -0
- data/ext/gecode-1.3.1/contribs/graph/var.icc +106 -0
- data/ext/gecode-1.3.1/contribs/graph/view.icc +373 -0
- data/ext/gecode-1.3.1/contribs/graph/view/arcnode.cc +162 -0
- data/ext/gecode-1.3.1/contribs/graph/view/arcnode.hh +78 -0
- data/ext/gecode-1.3.1/contribs/graph/view/boundsgraphs.icc +349 -0
- data/ext/gecode-1.3.1/contribs/graph/view/constant.icc +148 -0
- data/ext/gecode-1.3.1/contribs/graph/view/iter.icc +337 -0
- data/ext/gecode-1.3.1/contribs/graph/view/nodearcsets.icc +493 -0
- data/ext/gecode-1.3.1/contribs/graph/view/nodeset.icc +60 -0
- data/ext/gecode-1.3.1/contribs/graph/view/outadjsets.icc +600 -0
- data/ext/gecode-1.3.1/contribs/graph/view/prop.icc +135 -0
- data/ext/gecode-1.3.1/contribs/map/COMPILING +68 -0
- data/ext/gecode-1.3.1/contribs/map/LICENSE +11 -0
- data/ext/gecode-1.3.1/contribs/map/Makefile.in.in +173 -0
- data/ext/gecode-1.3.1/contribs/map/configure +2285 -0
- data/ext/gecode-1.3.1/contribs/map/configure.ac +32 -0
- data/ext/gecode-1.3.1/contribs/map/constraints.hh +46 -0
- data/ext/gecode-1.3.1/contribs/map/constraints.icc +84 -0
- data/ext/gecode-1.3.1/contribs/map/doxygen.conf +1229 -0
- data/ext/gecode-1.3.1/contribs/map/doxygen.hh +33 -0
- data/ext/gecode-1.3.1/contribs/map/examples/approximateMatching.cc +199 -0
- data/ext/gecode-1.3.1/contribs/map/examples/g1.txt +1 -0
- data/ext/gecode-1.3.1/contribs/map/examples/g2.txt +1 -0
- data/ext/gecode-1.3.1/contribs/map/examples/graph-examples.tgz +0 -0
- data/ext/gecode-1.3.1/contribs/map/examples/isomorphism.cc +148 -0
- data/ext/gecode-1.3.1/contribs/map/examples/map +0 -0
- data/ext/gecode-1.3.1/contribs/map/examples/map.cc +80 -0
- data/ext/gecode-1.3.1/contribs/map/examples/subgraphmonomorphism.cc +155 -0
- data/ext/gecode-1.3.1/contribs/map/map.hh +65 -0
- data/ext/gecode-1.3.1/contribs/map/matching/mono.hh +235 -0
- data/ext/gecode-1.3.1/contribs/map/matching/mono.icc +771 -0
- data/ext/gecode-1.3.1/contribs/map/shortdesc.ac +2 -0
- data/ext/gecode-1.3.1/contribs/map/var.icc +346 -0
- data/ext/gecode-1.3.1/contribs/map/var/imp.cc +42 -0
- data/ext/gecode-1.3.1/contribs/map/var/imp.icc +436 -0
- data/ext/gecode-1.3.1/doxygen.conf.in +1225 -0
- data/ext/gecode-1.3.1/doxygen.hh.in +877 -0
- data/ext/gecode-1.3.1/examples/all-interval-sort.cc +201 -0
- data/ext/gecode-1.3.1/examples/all-interval.cc +114 -0
- data/ext/gecode-1.3.1/examples/alpha.cc +112 -0
- data/ext/gecode-1.3.1/examples/baseline.cc +71 -0
- data/ext/gecode-1.3.1/examples/bibd.cc +173 -0
- data/ext/gecode-1.3.1/examples/black-hole.cc +281 -0
- data/ext/gecode-1.3.1/examples/cars.cc +165 -0
- data/ext/gecode-1.3.1/examples/crew.cc +220 -0
- data/ext/gecode-1.3.1/examples/crowded-chess.cc +312 -0
- data/ext/gecode-1.3.1/examples/donald.cc +93 -0
- data/ext/gecode-1.3.1/examples/eq20.cc +111 -0
- data/ext/gecode-1.3.1/examples/golf.cc +242 -0
- data/ext/gecode-1.3.1/examples/golomb.cc +141 -0
- data/ext/gecode-1.3.1/examples/graph-color.cc +371 -0
- data/ext/gecode-1.3.1/examples/grocery.cc +107 -0
- data/ext/gecode-1.3.1/examples/hamming.cc +107 -0
- data/ext/gecode-1.3.1/examples/ind-set.cc +130 -0
- data/ext/gecode-1.3.1/examples/knights.cc +146 -0
- data/ext/gecode-1.3.1/examples/langfordnum.cc +244 -0
- data/ext/gecode-1.3.1/examples/magic-sequence-gcc.cc +93 -0
- data/ext/gecode-1.3.1/examples/magic-sequence.cc +108 -0
- data/ext/gecode-1.3.1/examples/magic-square.cc +120 -0
- data/ext/gecode-1.3.1/examples/money.cc +92 -0
- data/ext/gecode-1.3.1/examples/ortho-latin.cc +156 -0
- data/ext/gecode-1.3.1/examples/packing.cc +211 -0
- data/ext/gecode-1.3.1/examples/partition.cc +126 -0
- data/ext/gecode-1.3.1/examples/photo.cc +155 -0
- data/ext/gecode-1.3.1/examples/picture-puzzle.cc +481 -0
- data/ext/gecode-1.3.1/examples/queen-armies.cc +240 -0
- data/ext/gecode-1.3.1/examples/queens.cc +99 -0
- data/ext/gecode-1.3.1/examples/sports-league.cc +454 -0
- data/ext/gecode-1.3.1/examples/steiner.cc +148 -0
- data/ext/gecode-1.3.1/examples/stress-domain.cc +86 -0
- data/ext/gecode-1.3.1/examples/stress-element.cc +95 -0
- data/ext/gecode-1.3.1/examples/stress-exec.cc +74 -0
- data/ext/gecode-1.3.1/examples/stress-min.cc +84 -0
- data/ext/gecode-1.3.1/examples/stress-search.cc +72 -0
- data/ext/gecode-1.3.1/examples/sudoku-mixed.cc +282 -0
- data/ext/gecode-1.3.1/examples/sudoku-set.cc +162 -0
- data/ext/gecode-1.3.1/examples/sudoku.cc +188 -0
- data/ext/gecode-1.3.1/examples/sudoku.icc +703 -0
- data/ext/gecode-1.3.1/examples/support.cc +160 -0
- data/ext/gecode-1.3.1/examples/support.hh +98 -0
- data/ext/gecode-1.3.1/examples/support.icc +187 -0
- data/ext/gecode-1.3.1/examples/timer.cc +47 -0
- data/ext/gecode-1.3.1/examples/timer.hh +72 -0
- data/ext/gecode-1.3.1/examples/warehouses.cc +176 -0
- data/ext/gecode-1.3.1/extconf.rb +8 -0
- data/ext/gecode-1.3.1/gecode.m4 +736 -0
- data/ext/gecode-1.3.1/gecode/config.icc.in +50 -0
- data/ext/gecode-1.3.1/gecode/int.hh +1426 -0
- data/ext/gecode-1.3.1/gecode/int/arithmetic.cc +87 -0
- data/ext/gecode-1.3.1/gecode/int/arithmetic.hh +292 -0
- data/ext/gecode-1.3.1/gecode/int/arithmetic/abs.icc +213 -0
- data/ext/gecode-1.3.1/gecode/int/arithmetic/max.icc +196 -0
- data/ext/gecode-1.3.1/gecode/int/arithmetic/mult.icc +478 -0
- data/ext/gecode-1.3.1/gecode/int/array.cc +61 -0
- data/ext/gecode-1.3.1/gecode/int/array.icc +264 -0
- data/ext/gecode-1.3.1/gecode/int/bool.cc +187 -0
- data/ext/gecode-1.3.1/gecode/int/bool.hh +255 -0
- data/ext/gecode-1.3.1/gecode/int/bool/base.icc +123 -0
- data/ext/gecode-1.3.1/gecode/int/bool/eq.icc +89 -0
- data/ext/gecode-1.3.1/gecode/int/bool/eqv.icc +132 -0
- data/ext/gecode-1.3.1/gecode/int/bool/or.icc +380 -0
- data/ext/gecode-1.3.1/gecode/int/branch.cc +81 -0
- data/ext/gecode-1.3.1/gecode/int/branch.hh +444 -0
- data/ext/gecode-1.3.1/gecode/int/branch/assign.cc +83 -0
- data/ext/gecode-1.3.1/gecode/int/branch/assign.icc +76 -0
- data/ext/gecode-1.3.1/gecode/int/branch/select-val.icc +104 -0
- data/ext/gecode-1.3.1/gecode/int/branch/select-view.icc +219 -0
- data/ext/gecode-1.3.1/gecode/int/channel.cc +62 -0
- data/ext/gecode-1.3.1/gecode/int/channel.hh +144 -0
- data/ext/gecode-1.3.1/gecode/int/channel/base.icc +60 -0
- data/ext/gecode-1.3.1/gecode/int/channel/dom.icc +313 -0
- data/ext/gecode-1.3.1/gecode/int/channel/stack.icc +59 -0
- data/ext/gecode-1.3.1/gecode/int/channel/val.icc +239 -0
- data/ext/gecode-1.3.1/gecode/int/count.cc +174 -0
- data/ext/gecode-1.3.1/gecode/int/count.hh +401 -0
- data/ext/gecode-1.3.1/gecode/int/count/int.icc +495 -0
- data/ext/gecode-1.3.1/gecode/int/count/rel.icc +100 -0
- data/ext/gecode-1.3.1/gecode/int/count/view.icc +332 -0
- data/ext/gecode-1.3.1/gecode/int/cumulatives.cc +210 -0
- data/ext/gecode-1.3.1/gecode/int/cumulatives.hh +118 -0
- data/ext/gecode-1.3.1/gecode/int/cumulatives/val.icc +377 -0
- data/ext/gecode-1.3.1/gecode/int/distinct.cc +77 -0
- data/ext/gecode-1.3.1/gecode/int/distinct.hh +272 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/bilink.icc +73 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/bnd.icc +335 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/combptr.icc +62 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/dom.icc +740 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/edge.icc +96 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/node.icc +107 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/ter-dom.icc +97 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/val.icc +171 -0
- data/ext/gecode-1.3.1/gecode/int/dom.cc +81 -0
- data/ext/gecode-1.3.1/gecode/int/dom.hh +101 -0
- data/ext/gecode-1.3.1/gecode/int/dom/range.icc +85 -0
- data/ext/gecode-1.3.1/gecode/int/dom/spec.icc +85 -0
- data/ext/gecode-1.3.1/gecode/int/element.cc +58 -0
- data/ext/gecode-1.3.1/gecode/int/element.hh +203 -0
- data/ext/gecode-1.3.1/gecode/int/element/int.icc +396 -0
- data/ext/gecode-1.3.1/gecode/int/element/view.icc +443 -0
- data/ext/gecode-1.3.1/gecode/int/exception.icc +137 -0
- data/ext/gecode-1.3.1/gecode/int/gcc.cc +708 -0
- data/ext/gecode-1.3.1/gecode/int/gcc.hh +338 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/bnd.icc +629 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/dom.icc +504 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/gccbndsup.icc +760 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/graphsup.icc +2375 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/lbc.icc +375 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/occur.icc +687 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/ubc.icc +236 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/val.icc +373 -0
- data/ext/gecode-1.3.1/gecode/int/int-set.cc +115 -0
- data/ext/gecode-1.3.1/gecode/int/int-set.icc +151 -0
- data/ext/gecode-1.3.1/gecode/int/linear.cc +247 -0
- data/ext/gecode-1.3.1/gecode/int/linear.hh +1056 -0
- data/ext/gecode-1.3.1/gecode/int/linear/binary.icc +439 -0
- data/ext/gecode-1.3.1/gecode/int/linear/bool-int.icc +422 -0
- data/ext/gecode-1.3.1/gecode/int/linear/bool-view.icc +311 -0
- data/ext/gecode-1.3.1/gecode/int/linear/dom.icc +503 -0
- data/ext/gecode-1.3.1/gecode/int/linear/nary.icc +857 -0
- data/ext/gecode-1.3.1/gecode/int/linear/noview.icc +264 -0
- data/ext/gecode-1.3.1/gecode/int/linear/post.cc +542 -0
- data/ext/gecode-1.3.1/gecode/int/linear/ternary.icc +255 -0
- data/ext/gecode-1.3.1/gecode/int/propagator.icc +194 -0
- data/ext/gecode-1.3.1/gecode/int/regular.cc +40 -0
- data/ext/gecode-1.3.1/gecode/int/regular.hh +83 -0
- data/ext/gecode-1.3.1/gecode/int/regular/dfa.cc +466 -0
- data/ext/gecode-1.3.1/gecode/int/regular/dfa.icc +172 -0
- data/ext/gecode-1.3.1/gecode/int/regular/dom.icc +480 -0
- data/ext/gecode-1.3.1/gecode/int/regular/reg.cc +738 -0
- data/ext/gecode-1.3.1/gecode/int/rel.cc +293 -0
- data/ext/gecode-1.3.1/gecode/int/rel.hh +526 -0
- data/ext/gecode-1.3.1/gecode/int/rel/eq.icc +640 -0
- data/ext/gecode-1.3.1/gecode/int/rel/lex.icc +212 -0
- data/ext/gecode-1.3.1/gecode/int/rel/lq-le.icc +246 -0
- data/ext/gecode-1.3.1/gecode/int/rel/nq.icc +188 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness.cc +124 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness.hh +108 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness/matching.icc +177 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness/narrowing.icc +243 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness/order.icc +232 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness/sortedness.icc +727 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness/sortsup.icc +666 -0
- data/ext/gecode-1.3.1/gecode/int/var-imp.vis +198 -0
- data/ext/gecode-1.3.1/gecode/int/var.icc +590 -0
- data/ext/gecode-1.3.1/gecode/int/var/bool.icc +52 -0
- data/ext/gecode-1.3.1/gecode/int/var/imp-body.icc +65 -0
- data/ext/gecode-1.3.1/gecode/int/var/imp-hdr.icc +191 -0
- data/ext/gecode-1.3.1/gecode/int/var/imp.cc +361 -0
- data/ext/gecode-1.3.1/gecode/int/var/imp.icc +579 -0
- data/ext/gecode-1.3.1/gecode/int/var/int.cc +63 -0
- data/ext/gecode-1.3.1/gecode/int/var/int.icc +135 -0
- data/ext/gecode-1.3.1/gecode/int/view.icc +1219 -0
- data/ext/gecode-1.3.1/gecode/int/view/bool.icc +270 -0
- data/ext/gecode-1.3.1/gecode/int/view/constint.icc +306 -0
- data/ext/gecode-1.3.1/gecode/int/view/int.icc +221 -0
- data/ext/gecode-1.3.1/gecode/int/view/iter.icc +49 -0
- data/ext/gecode-1.3.1/gecode/int/view/minus.icc +285 -0
- data/ext/gecode-1.3.1/gecode/int/view/offset.icc +274 -0
- data/ext/gecode-1.3.1/gecode/int/view/print.cc +109 -0
- data/ext/gecode-1.3.1/gecode/int/view/rtest.icc +215 -0
- data/ext/gecode-1.3.1/gecode/int/view/scale.icc +373 -0
- data/ext/gecode-1.3.1/gecode/iter.hh +65 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-add.icc +130 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-append.icc +208 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-array.icc +123 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-cache.icc +143 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-compl.icc +206 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-diff.icc +127 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-empty.icc +96 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-inter.icc +202 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-minmax.icc +103 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-minus.icc +138 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-offset.icc +112 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-operations.icc +142 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-scale.icc +224 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-singleton.icc +71 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-size.icc +131 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-union.icc +211 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-values.icc +125 -0
- data/ext/gecode-1.3.1/gecode/iter/values-ranges.icc +91 -0
- data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-compl.icc +247 -0
- data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-inter.icc +227 -0
- data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-union.icc +236 -0
- data/ext/gecode-1.3.1/gecode/iter/virtual-ranges.icc +126 -0
- data/ext/gecode-1.3.1/gecode/kernel.hh +141 -0
- data/ext/gecode-1.3.1/gecode/kernel/array.icc +954 -0
- data/ext/gecode-1.3.1/gecode/kernel/branching.icc +233 -0
- data/ext/gecode-1.3.1/gecode/kernel/core.cc +417 -0
- data/ext/gecode-1.3.1/gecode/kernel/core.icc +1681 -0
- data/ext/gecode-1.3.1/gecode/kernel/exception.cc +49 -0
- data/ext/gecode-1.3.1/gecode/kernel/exception.icc +104 -0
- data/ext/gecode-1.3.1/gecode/kernel/macros.icc +98 -0
- data/ext/gecode-1.3.1/gecode/kernel/memory-manager.cc +41 -0
- data/ext/gecode-1.3.1/gecode/kernel/memory-manager.icc +438 -0
- data/ext/gecode-1.3.1/gecode/kernel/memory.icc +205 -0
- data/ext/gecode-1.3.1/gecode/kernel/modevent.icc +53 -0
- data/ext/gecode-1.3.1/gecode/kernel/propagator.icc +680 -0
- data/ext/gecode-1.3.1/gecode/kernel/view.icc +583 -0
- data/ext/gecode-1.3.1/gecode/limits.hh +87 -0
- data/ext/gecode-1.3.1/gecode/minimodel.hh +942 -0
- data/ext/gecode-1.3.1/gecode/minimodel/arithmetic.cc +137 -0
- data/ext/gecode-1.3.1/gecode/minimodel/bool-expr.cc +207 -0
- data/ext/gecode-1.3.1/gecode/minimodel/bool-expr.icc +191 -0
- data/ext/gecode-1.3.1/gecode/minimodel/bool-rel.icc +66 -0
- data/ext/gecode-1.3.1/gecode/minimodel/exception.icc +59 -0
- data/ext/gecode-1.3.1/gecode/minimodel/lin-expr.cc +103 -0
- data/ext/gecode-1.3.1/gecode/minimodel/lin-expr.icc +192 -0
- data/ext/gecode-1.3.1/gecode/minimodel/lin-rel.icc +200 -0
- data/ext/gecode-1.3.1/gecode/minimodel/matrix.icc +118 -0
- data/ext/gecode-1.3.1/gecode/minimodel/scheduling.cc +241 -0
- data/ext/gecode-1.3.1/gecode/search.hh +745 -0
- data/ext/gecode-1.3.1/gecode/search/bab.cc +153 -0
- data/ext/gecode-1.3.1/gecode/search/bab.icc +101 -0
- data/ext/gecode-1.3.1/gecode/search/dfs.cc +63 -0
- data/ext/gecode-1.3.1/gecode/search/dfs.icc +144 -0
- data/ext/gecode-1.3.1/gecode/search/engine-ctrl.icc +109 -0
- data/ext/gecode-1.3.1/gecode/search/lds.cc +237 -0
- data/ext/gecode-1.3.1/gecode/search/lds.icc +57 -0
- data/ext/gecode-1.3.1/gecode/search/reco-stack.icc +219 -0
- data/ext/gecode-1.3.1/gecode/search/restart.icc +76 -0
- data/ext/gecode-1.3.1/gecode/search/statistics.icc +30 -0
- data/ext/gecode-1.3.1/gecode/search/stop.cc +58 -0
- data/ext/gecode-1.3.1/gecode/search/stop.icc +100 -0
- data/ext/gecode-1.3.1/gecode/set.hh +419 -0
- data/ext/gecode-1.3.1/gecode/set/array.cc +114 -0
- data/ext/gecode-1.3.1/gecode/set/array.icc +134 -0
- data/ext/gecode-1.3.1/gecode/set/branch.cc +57 -0
- data/ext/gecode-1.3.1/gecode/set/branch.hh +176 -0
- data/ext/gecode-1.3.1/gecode/set/branch/select-val.icc +72 -0
- data/ext/gecode-1.3.1/gecode/set/branch/select-view.icc +112 -0
- data/ext/gecode-1.3.1/gecode/set/cardinality.cc +49 -0
- data/ext/gecode-1.3.1/gecode/set/convex.cc +43 -0
- data/ext/gecode-1.3.1/gecode/set/convex.hh +92 -0
- data/ext/gecode-1.3.1/gecode/set/convex/conv.cc +81 -0
- data/ext/gecode-1.3.1/gecode/set/convex/conv.icc +51 -0
- data/ext/gecode-1.3.1/gecode/set/convex/hull.cc +100 -0
- data/ext/gecode-1.3.1/gecode/set/convex/hull.icc +52 -0
- data/ext/gecode-1.3.1/gecode/set/distinct.cc +48 -0
- data/ext/gecode-1.3.1/gecode/set/distinct.hh +97 -0
- data/ext/gecode-1.3.1/gecode/set/distinct/atmostOne.cc +151 -0
- data/ext/gecode-1.3.1/gecode/set/distinct/atmostOne.icc +50 -0
- data/ext/gecode-1.3.1/gecode/set/distinct/binomial.cc +46 -0
- data/ext/gecode-1.3.1/gecode/set/distinct/binomial.icc +157 -0
- data/ext/gecode-1.3.1/gecode/set/distinct/distinct.cc +124 -0
- data/ext/gecode-1.3.1/gecode/set/distinct/distinct.icc +58 -0
- data/ext/gecode-1.3.1/gecode/set/dom.cc +224 -0
- data/ext/gecode-1.3.1/gecode/set/exception.icc +132 -0
- data/ext/gecode-1.3.1/gecode/set/int.cc +139 -0
- data/ext/gecode-1.3.1/gecode/set/int.hh +226 -0
- data/ext/gecode-1.3.1/gecode/set/int/card.cc +61 -0
- data/ext/gecode-1.3.1/gecode/set/int/card.icc +54 -0
- data/ext/gecode-1.3.1/gecode/set/int/channel.cc +100 -0
- data/ext/gecode-1.3.1/gecode/set/int/channel.icc +75 -0
- data/ext/gecode-1.3.1/gecode/set/int/match.cc +148 -0
- data/ext/gecode-1.3.1/gecode/set/int/match.icc +67 -0
- data/ext/gecode-1.3.1/gecode/set/int/minmax.cc +109 -0
- data/ext/gecode-1.3.1/gecode/set/int/minmax.icc +63 -0
- data/ext/gecode-1.3.1/gecode/set/int/weights.cc +182 -0
- data/ext/gecode-1.3.1/gecode/set/int/weights.icc +174 -0
- data/ext/gecode-1.3.1/gecode/set/projectors-compiler.hh +148 -0
- data/ext/gecode-1.3.1/gecode/set/projectors.cc +109 -0
- data/ext/gecode-1.3.1/gecode/set/projectors.hh +319 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/compiler.cc +841 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/projector-set.cc +69 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/projector-set.icc +66 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/projector.cc +125 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/projector.icc +79 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator.hh +127 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator/card.icc +96 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator/nary.icc +106 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator/re-nary.cc +76 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator/re-nary.icc +53 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/set-expr.cc +306 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/set-expr.icc +192 -0
- data/ext/gecode-1.3.1/gecode/set/propagator.icc +96 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op-const.cc +233 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op.cc +96 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op.hh +267 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/common.icc +528 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/inter.icc +312 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/partition.icc +131 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/post.icc +198 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/subofunion.icc +150 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/superofinter.icc +151 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/union.icc +292 -0
- data/ext/gecode-1.3.1/gecode/set/rel.cc +201 -0
- data/ext/gecode-1.3.1/gecode/set/rel.hh +250 -0
- data/ext/gecode-1.3.1/gecode/set/rel/common.icc +109 -0
- data/ext/gecode-1.3.1/gecode/set/rel/eq.icc +101 -0
- data/ext/gecode-1.3.1/gecode/set/rel/nosubset.icc +88 -0
- data/ext/gecode-1.3.1/gecode/set/rel/nq.icc +132 -0
- data/ext/gecode-1.3.1/gecode/set/rel/re-eq.icc +142 -0
- data/ext/gecode-1.3.1/gecode/set/rel/re-subset.icc +121 -0
- data/ext/gecode-1.3.1/gecode/set/rel/subset.icc +80 -0
- data/ext/gecode-1.3.1/gecode/set/select.cc +88 -0
- data/ext/gecode-1.3.1/gecode/set/select.hh +113 -0
- data/ext/gecode-1.3.1/gecode/set/select/disjoint.cc +267 -0
- data/ext/gecode-1.3.1/gecode/set/select/disjoint.icc +59 -0
- data/ext/gecode-1.3.1/gecode/set/select/idxarray.hh +91 -0
- data/ext/gecode-1.3.1/gecode/set/select/idxarray.icc +112 -0
- data/ext/gecode-1.3.1/gecode/set/select/inter.icc +300 -0
- data/ext/gecode-1.3.1/gecode/set/sequence.cc +48 -0
- data/ext/gecode-1.3.1/gecode/set/sequence.hh +97 -0
- data/ext/gecode-1.3.1/gecode/set/sequence/common.icc +79 -0
- data/ext/gecode-1.3.1/gecode/set/sequence/seq-u.cc +83 -0
- data/ext/gecode-1.3.1/gecode/set/sequence/seq-u.icc +63 -0
- data/ext/gecode-1.3.1/gecode/set/sequence/seq.cc +61 -0
- data/ext/gecode-1.3.1/gecode/set/sequence/seq.icc +53 -0
- data/ext/gecode-1.3.1/gecode/set/var-imp.vis +205 -0
- data/ext/gecode-1.3.1/gecode/set/var.icc +1090 -0
- data/ext/gecode-1.3.1/gecode/set/var/imp-body.icc +192 -0
- data/ext/gecode-1.3.1/gecode/set/var/imp-hdr.icc +235 -0
- data/ext/gecode-1.3.1/gecode/set/var/imp.cc +127 -0
- data/ext/gecode-1.3.1/gecode/set/var/imp.icc +356 -0
- data/ext/gecode-1.3.1/gecode/set/var/integerset.cc +256 -0
- data/ext/gecode-1.3.1/gecode/set/var/integerset.icc +512 -0
- data/ext/gecode-1.3.1/gecode/set/var/iter.icc +47 -0
- data/ext/gecode-1.3.1/gecode/set/var/set.cc +99 -0
- data/ext/gecode-1.3.1/gecode/set/var/set.icc +282 -0
- data/ext/gecode-1.3.1/gecode/set/view.icc +1075 -0
- data/ext/gecode-1.3.1/gecode/set/view/complement.icc +525 -0
- data/ext/gecode-1.3.1/gecode/set/view/const.icc +651 -0
- data/ext/gecode-1.3.1/gecode/set/view/print.cc +120 -0
- data/ext/gecode-1.3.1/gecode/set/view/set.icc +217 -0
- data/ext/gecode-1.3.1/gecode/set/view/singleton.icc +348 -0
- data/ext/gecode-1.3.1/gecode/support/block-allocator.hh +152 -0
- data/ext/gecode-1.3.1/gecode/support/dynamic-array.hh +131 -0
- data/ext/gecode-1.3.1/gecode/support/dynamic-stack.hh +157 -0
- data/ext/gecode-1.3.1/gecode/support/random.hh +100 -0
- data/ext/gecode-1.3.1/gecode/support/shared-array.hh +255 -0
- data/ext/gecode-1.3.1/gecode/support/sort.hh +193 -0
- data/ext/gecode-1.3.1/gecode/support/static-pqueue.hh +240 -0
- data/ext/gecode-1.3.1/gecode/support/static-stack.hh +117 -0
- data/ext/gecode-1.3.1/install-sh +323 -0
- data/ext/gecode-1.3.1/misc/debian/Makefile.am +8 -0
- data/ext/gecode-1.3.1/misc/debian/changelog +6 -0
- data/ext/gecode-1.3.1/misc/debian/control +11 -0
- data/ext/gecode-1.3.1/misc/debian/copyright +44 -0
- data/ext/gecode-1.3.1/misc/debian/gecode.info +9 -0
- data/ext/gecode-1.3.1/misc/debian/gecode.install +2 -0
- data/ext/gecode-1.3.1/misc/debian/gecode.spec +58 -0
- data/ext/gecode-1.3.1/misc/debian/rules +81 -0
- data/ext/gecode-1.3.1/misc/doxygen/back.png +0 -0
- data/ext/gecode-1.3.1/misc/doxygen/footer.html +3 -0
- data/ext/gecode-1.3.1/misc/doxygen/gecode-logo-100.png +0 -0
- data/ext/gecode-1.3.1/misc/doxygen/header.html +46 -0
- data/ext/gecode-1.3.1/misc/doxygen/stylesheet.css +460 -0
- data/ext/gecode-1.3.1/misc/fixproperties.sh +32 -0
- data/ext/gecode-1.3.1/misc/gecode-minimodel.pc.in +12 -0
- data/ext/gecode-1.3.1/misc/gecode-search.pc.in +12 -0
- data/ext/gecode-1.3.1/misc/gecode.pc.in +12 -0
- data/ext/gecode-1.3.1/misc/genchangelog.perl +190 -0
- data/ext/gecode-1.3.1/misc/genlicense.perl +113 -0
- data/ext/gecode-1.3.1/misc/genstatistics.perl +155 -0
- data/ext/gecode-1.3.1/misc/gentxtchangelog.perl +170 -0
- data/ext/gecode-1.3.1/misc/genvarimp.perl +666 -0
- data/ext/gecode-1.3.1/misc/getrevision.perl +32 -0
- data/ext/gecode-1.3.1/misc/makedepend.perl +66 -0
- data/ext/gecode-1.3.1/test/int.cc +497 -0
- data/ext/gecode-1.3.1/test/int.hh +119 -0
- data/ext/gecode-1.3.1/test/int/arithmetic.cc +262 -0
- data/ext/gecode-1.3.1/test/int/basic.cc +42 -0
- data/ext/gecode-1.3.1/test/int/bool.cc +189 -0
- data/ext/gecode-1.3.1/test/int/channel.cc +79 -0
- data/ext/gecode-1.3.1/test/int/count.cc +264 -0
- data/ext/gecode-1.3.1/test/int/distinct.cc +121 -0
- data/ext/gecode-1.3.1/test/int/dom.cc +69 -0
- data/ext/gecode-1.3.1/test/int/element.cc +132 -0
- data/ext/gecode-1.3.1/test/int/gcc.cc +592 -0
- data/ext/gecode-1.3.1/test/int/linear.cc +315 -0
- data/ext/gecode-1.3.1/test/int/minimodel.cc +451 -0
- data/ext/gecode-1.3.1/test/int/regular.cc +105 -0
- data/ext/gecode-1.3.1/test/int/rel.cc +283 -0
- data/ext/gecode-1.3.1/test/int/scheduling.cc +259 -0
- data/ext/gecode-1.3.1/test/int/sortedness.cc +272 -0
- data/ext/gecode-1.3.1/test/intset.cc +40 -0
- data/ext/gecode-1.3.1/test/log.cc +515 -0
- data/ext/gecode-1.3.1/test/log.hh +68 -0
- data/ext/gecode-1.3.1/test/set.cc +542 -0
- data/ext/gecode-1.3.1/test/set.hh +152 -0
- data/ext/gecode-1.3.1/test/set/convex.cc +94 -0
- data/ext/gecode-1.3.1/test/set/distinct.cc +148 -0
- data/ext/gecode-1.3.1/test/set/dom.cc +67 -0
- data/ext/gecode-1.3.1/test/set/int.cc +249 -0
- data/ext/gecode-1.3.1/test/set/projection.cc +333 -0
- data/ext/gecode-1.3.1/test/set/rel-op.cc +662 -0
- data/ext/gecode-1.3.1/test/set/rel.cc +198 -0
- data/ext/gecode-1.3.1/test/set/select.cc +108 -0
- data/ext/gecode-1.3.1/test/set/sequence.cc +83 -0
- data/ext/gecode-1.3.1/test/stress.cc +93 -0
- data/ext/gecode-1.3.1/test/stress.hh +74 -0
- data/ext/gecode-1.3.1/test/stress/distinct.cc +70 -0
- data/ext/gecode-1.3.1/test/stress/domain.cc +69 -0
- data/ext/gecode-1.3.1/test/stress/exec.cc +60 -0
- data/ext/gecode-1.3.1/test/stress/minsort.cc +63 -0
- data/ext/gecode-1.3.1/test/stress/regular.cc +112 -0
- data/ext/gecode-1.3.1/test/test.cc +215 -0
- data/ext/gecode-1.3.1/test/test.hh +107 -0
- data/ext/missing.cpp +328 -0
- data/ext/missing.h +120 -0
- data/ext/vararray.cpp +330 -0
- data/ext/vararray.h +149 -0
- data/lib/gecoder.rb +5 -0
- data/lib/gecoder/bindings.rb +34 -0
- data/lib/gecoder/bindings/bindings.rb +2209 -0
- data/lib/gecoder/interface.rb +8 -0
- data/lib/gecoder/interface/binding_changes.rb +313 -0
- data/lib/gecoder/interface/branch.rb +152 -0
- data/lib/gecoder/interface/constraints.rb +397 -0
- data/lib/gecoder/interface/constraints/bool/boolean.rb +246 -0
- data/lib/gecoder/interface/constraints/bool/linear.rb +29 -0
- data/lib/gecoder/interface/constraints/bool_enum/boolean.rb +84 -0
- data/lib/gecoder/interface/constraints/bool_enum_constraints.rb +8 -0
- data/lib/gecoder/interface/constraints/bool_var_constraints.rb +75 -0
- data/lib/gecoder/interface/constraints/int/arithmetic.rb +71 -0
- data/lib/gecoder/interface/constraints/int/domain.rb +78 -0
- data/lib/gecoder/interface/constraints/int/linear.rb +295 -0
- data/lib/gecoder/interface/constraints/int_enum/arithmetic.rb +72 -0
- data/lib/gecoder/interface/constraints/int_enum/channel.rb +100 -0
- data/lib/gecoder/interface/constraints/int_enum/count.rb +92 -0
- data/lib/gecoder/interface/constraints/int_enum/distinct.rb +69 -0
- data/lib/gecoder/interface/constraints/int_enum/element.rb +82 -0
- data/lib/gecoder/interface/constraints/int_enum/equality.rb +38 -0
- data/lib/gecoder/interface/constraints/int_enum/sort.rb +126 -0
- data/lib/gecoder/interface/constraints/int_enum_constraints.rb +37 -0
- data/lib/gecoder/interface/constraints/int_var_constraints.rb +58 -0
- data/lib/gecoder/interface/constraints/reifiable_constraints.rb +78 -0
- data/lib/gecoder/interface/constraints/set/cardinality.rb +75 -0
- data/lib/gecoder/interface/constraints/set/connection.rb +193 -0
- data/lib/gecoder/interface/constraints/set/domain.rb +109 -0
- data/lib/gecoder/interface/constraints/set/operation.rb +132 -0
- data/lib/gecoder/interface/constraints/set/relation.rb +178 -0
- data/lib/gecoder/interface/constraints/set_enum/channel.rb +18 -0
- data/lib/gecoder/interface/constraints/set_enum/distinct.rb +80 -0
- data/lib/gecoder/interface/constraints/set_enum/operation.rb +60 -0
- data/lib/gecoder/interface/constraints/set_enum/selection.rb +217 -0
- data/lib/gecoder/interface/constraints/set_enum_constraints.rb +34 -0
- data/lib/gecoder/interface/constraints/set_var_constraints.rb +72 -0
- data/lib/gecoder/interface/enum_matrix.rb +64 -0
- data/lib/gecoder/interface/enum_wrapper.rb +153 -0
- data/lib/gecoder/interface/model.rb +251 -0
- data/lib/gecoder/interface/search.rb +123 -0
- data/lib/gecoder/interface/variables.rb +254 -0
- data/lib/gecoder/version.rb +4 -0
- data/specs/binding_changes.rb +76 -0
- data/specs/bool_var.rb +74 -0
- data/specs/branch.rb +170 -0
- data/specs/constraints/arithmetic.rb +266 -0
- data/specs/constraints/bool_enum.rb +140 -0
- data/specs/constraints/boolean.rb +232 -0
- data/specs/constraints/cardinality.rb +154 -0
- data/specs/constraints/channel.rb +126 -0
- data/specs/constraints/connection.rb +373 -0
- data/specs/constraints/constraint_helper.rb +180 -0
- data/specs/constraints/constraints.rb +74 -0
- data/specs/constraints/count.rb +139 -0
- data/specs/constraints/distinct.rb +218 -0
- data/specs/constraints/element.rb +106 -0
- data/specs/constraints/equality.rb +31 -0
- data/specs/constraints/int_domain.rb +69 -0
- data/specs/constraints/int_relation.rb +78 -0
- data/specs/constraints/linear.rb +332 -0
- data/specs/constraints/reification_sugar.rb +96 -0
- data/specs/constraints/selection.rb +292 -0
- data/specs/constraints/set_domain.rb +181 -0
- data/specs/constraints/set_operation.rb +285 -0
- data/specs/constraints/set_relation.rb +201 -0
- data/specs/constraints/sort.rb +175 -0
- data/specs/enum_matrix.rb +43 -0
- data/specs/enum_wrapper.rb +122 -0
- data/specs/int_var.rb +144 -0
- data/specs/logging.rb +24 -0
- data/specs/model.rb +190 -0
- data/specs/search.rb +246 -0
- data/specs/set_var.rb +68 -0
- data/specs/spec_helper.rb +93 -0
- data/tasks/all_tasks.rb +1 -0
- data/tasks/distribution.rake +129 -0
- data/tasks/rcov.rake +17 -0
- data/tasks/specs.rake +15 -0
- data/tasks/svn.rake +11 -0
- data/tasks/website.rake +51 -0
- data/vendor/rust/README +28 -0
- data/vendor/rust/bin/cxxgenerator.rb +93 -0
- data/vendor/rust/include/rust_checks.hh +115 -0
- data/vendor/rust/include/rust_conversions.hh +102 -0
- data/vendor/rust/rust.rb +67 -0
- data/vendor/rust/rust/attribute.rb +51 -0
- data/vendor/rust/rust/bindings.rb +172 -0
- data/vendor/rust/rust/class.rb +339 -0
- data/vendor/rust/rust/constants.rb +48 -0
- data/vendor/rust/rust/container.rb +110 -0
- data/vendor/rust/rust/cppifaceparser.rb +129 -0
- data/vendor/rust/rust/cwrapper.rb +72 -0
- data/vendor/rust/rust/cxxclass.rb +98 -0
- data/vendor/rust/rust/element.rb +81 -0
- data/vendor/rust/rust/enum.rb +63 -0
- data/vendor/rust/rust/function.rb +407 -0
- data/vendor/rust/rust/namespace.rb +61 -0
- data/vendor/rust/rust/templates/AttributeDefinition.rusttpl +17 -0
- data/vendor/rust/rust/templates/AttributeInitBinding.rusttpl +9 -0
- data/vendor/rust/rust/templates/BindingsHeader.rusttpl +24 -0
- data/vendor/rust/rust/templates/BindingsUnit.rusttpl +46 -0
- data/vendor/rust/rust/templates/CWrapperClassDefinitions.rusttpl +64 -0
- data/vendor/rust/rust/templates/ClassDeclarations.rusttpl +7 -0
- data/vendor/rust/rust/templates/ClassInitialize.rusttpl +6 -0
- data/vendor/rust/rust/templates/ConstructorStub.rusttpl +21 -0
- data/vendor/rust/rust/templates/CxxClassDefinitions.rusttpl +91 -0
- data/vendor/rust/rust/templates/CxxMethodStub.rusttpl +12 -0
- data/vendor/rust/rust/templates/CxxStandaloneClassDefinitions.rusttpl +26 -0
- data/vendor/rust/rust/templates/EnumDeclarations.rusttpl +3 -0
- data/vendor/rust/rust/templates/EnumDefinitions.rusttpl +29 -0
- data/vendor/rust/rust/templates/FunctionDefinition.rusttpl +9 -0
- data/vendor/rust/rust/templates/FunctionInitAlias.rusttpl +5 -0
- data/vendor/rust/rust/templates/FunctionInitBinding.rusttpl +9 -0
- data/vendor/rust/rust/templates/MethodInitBinding.rusttpl +9 -0
- data/vendor/rust/rust/templates/ModuleDeclarations.rusttpl +3 -0
- data/vendor/rust/rust/templates/ModuleDefinitions.rusttpl +3 -0
- data/vendor/rust/rust/templates/StandaloneClassDeclarations.rusttpl +7 -0
- data/vendor/rust/rust/templates/VariableFunctionCall.rusttpl +14 -0
- data/vendor/rust/rust/type.rb +98 -0
- data/vendor/rust/test/Makefile +4 -0
- data/vendor/rust/test/constants.rb +36 -0
- data/vendor/rust/test/cppclass.cc +45 -0
- data/vendor/rust/test/cppclass.hh +67 -0
- data/vendor/rust/test/cppclass.rb +59 -0
- data/vendor/rust/test/cwrapper.c +74 -0
- data/vendor/rust/test/cwrapper.h +41 -0
- data/vendor/rust/test/cwrapper.rb +56 -0
- data/vendor/rust/test/dummyclass.hh +31 -0
- data/vendor/rust/test/lib/extension-test.rb +98 -0
- data/vendor/rust/test/operators.cc +41 -0
- data/vendor/rust/test/operators.hh +39 -0
- data/vendor/rust/test/operators.rb +39 -0
- data/vendor/rust/test/test-constants.rb +43 -0
- data/vendor/rust/test/test-cppclass.rb +82 -0
- data/vendor/rust/test/test-cwrapper.rb +80 -0
- data/vendor/rust/test/test-operators.rb +42 -0
- metadata +826 -0
@@ -0,0 +1,180 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
# This requires that the constraint spec has instance variables @invoke_options
|
4
|
+
# and @expect_options .
|
5
|
+
describe 'constraint with strength option', :shared => true do
|
6
|
+
{ :default => Gecode::Raw::ICL_DEF,
|
7
|
+
:value => Gecode::Raw::ICL_VAL,
|
8
|
+
:bounds => Gecode::Raw::ICL_BND,
|
9
|
+
:domain => Gecode::Raw::ICL_DOM
|
10
|
+
}.each_pair do |name, gecode_value|
|
11
|
+
it "should translate propagation strength #{name}" do
|
12
|
+
@expect_options.call(gecode_value, nil)
|
13
|
+
@invoke_options.call(:strength => name)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should default to using default as propagation strength' do
|
18
|
+
@expect_options.call(Gecode::Raw::ICL_DEF, nil)
|
19
|
+
@invoke_options.call({})
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should raise errors for unrecognized options' do
|
23
|
+
lambda{ @invoke_options.call(:does_not_exist => :foo) }.should(
|
24
|
+
raise_error(ArgumentError))
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should raise errors for unrecognized propagation strengths' do
|
28
|
+
lambda{ @invoke_options.call(:strength => :does_not_exist) }.should(
|
29
|
+
raise_error(ArgumentError))
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should raise errors for reification variables of incorrect type' do
|
33
|
+
lambda{ @invoke_options.call(:reify => 'foo') }.should(
|
34
|
+
raise_error(TypeError))
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# This requires that the constraint spec has instance variables @invoke_options
|
39
|
+
# and @expect_options .
|
40
|
+
describe 'constraint with options', :shared => true do
|
41
|
+
it 'should translate reification' do
|
42
|
+
var = @model.bool_var
|
43
|
+
@expect_options.call(Gecode::Raw::ICL_DEF, var)
|
44
|
+
@invoke_options.call(:reify => var)
|
45
|
+
end
|
46
|
+
|
47
|
+
it_should_behave_like 'constraint with strength option'
|
48
|
+
end
|
49
|
+
|
50
|
+
# This requires that the constraint spec has the instance variable
|
51
|
+
# @expect_relation which takes a relation, right hand side and whether it's
|
52
|
+
# negated as arguments and sets up the corresponding expectations. It also
|
53
|
+
# requires @invoke_relation with the same arguments. The spec is also required
|
54
|
+
# to provide a variable @target.
|
55
|
+
describe 'composite constraint', :shared => true do
|
56
|
+
Gecode::Constraints::Util::RELATION_TYPES.each_pair do |relation, type|
|
57
|
+
it "should translate #{relation} with constant target" do
|
58
|
+
@expect_relation.call(type, 1, false)
|
59
|
+
@invoke_relation.call(relation, 1, false)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
Gecode::Constraints::Util::RELATION_TYPES.each_pair do |relation, type|
|
64
|
+
it "should translate #{relation} with variable target" do
|
65
|
+
@expect_relation.call(type, @target, false)
|
66
|
+
@invoke_relation.call(relation, @target, false)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
Gecode::Constraints::Util::NEGATED_RELATION_TYPES.each_pair do |relation, type|
|
71
|
+
it "should translate negated #{relation} with constant target" do
|
72
|
+
@expect_relation.call(type, 1, true)
|
73
|
+
@invoke_relation.call(relation, 1, true)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
Gecode::Constraints::Util::NEGATED_RELATION_TYPES.each_pair do |relation, type|
|
78
|
+
it "should translate negated #{relation} with variable target" do
|
79
|
+
@expect_relation.call(type, @target, true)
|
80
|
+
@invoke_relation.call(relation, @target, true)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'should raise error if the target is of the wrong type' do
|
85
|
+
lambda do
|
86
|
+
@invoke_relation.call(:==, 'hello', false)
|
87
|
+
end.should raise_error(TypeError)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
# This requires that the constraint spec has the instance variable
|
92
|
+
# @expect_relation which takes a relation, right hand side and whether it's
|
93
|
+
# negated as arguments and sets up the corresponding expectations. It also
|
94
|
+
# requires @invoke_relation with the same arguments. The spec is also required
|
95
|
+
# to provide a variable @target.
|
96
|
+
describe 'composite set constraint', :shared => true do
|
97
|
+
Gecode::Constraints::Util::SET_RELATION_TYPES.each_pair do |relation, type|
|
98
|
+
it "should translate #{relation} with constant target" do
|
99
|
+
@expect_relation.call(type, [1], false)
|
100
|
+
@invoke_relation.call(relation, [1], false)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
Gecode::Constraints::Util::SET_RELATION_TYPES.each_pair do |relation, type|
|
105
|
+
it "should translate #{relation} with variable target" do
|
106
|
+
@expect_relation.call(type, @target, false)
|
107
|
+
@invoke_relation.call(relation, @target, false)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
Gecode::Constraints::Util::NEGATED_SET_RELATION_TYPES.each_pair do |relation, type|
|
112
|
+
it "should translate negated #{relation} with constant target" do
|
113
|
+
@expect_relation.call(type, [1], true)
|
114
|
+
@invoke_relation.call(relation, [1], true)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
Gecode::Constraints::Util::NEGATED_SET_RELATION_TYPES.each_pair do |relation, type|
|
119
|
+
it "should translate negated #{relation} with variable target" do
|
120
|
+
@expect_relation.call(type, @target, true)
|
121
|
+
@invoke_relation.call(relation, @target, true)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
it 'should raise error if the target is of the wrong type' do
|
126
|
+
lambda do
|
127
|
+
@invoke_relation.call(:==, 'hello', false)
|
128
|
+
end.should raise_error(TypeError)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
# Requires @invoke_options and @model.
|
133
|
+
describe 'non-reifiable set constraint', :shared => true do
|
134
|
+
it 'should not accept strength option' do
|
135
|
+
lambda do
|
136
|
+
@invoke_options.call(:strength => :default)
|
137
|
+
end.should raise_error(ArgumentError)
|
138
|
+
end
|
139
|
+
|
140
|
+
it 'should not accept reification option' do
|
141
|
+
bool = @model.bool_var
|
142
|
+
lambda do
|
143
|
+
@invoke_options.call(:reify => bool)
|
144
|
+
end.should raise_error(ArgumentError)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
# Requires @invoke_options, @expect_options and @model.
|
149
|
+
describe 'reifiable set constraint', :shared => true do
|
150
|
+
it 'should not accept strength option' do
|
151
|
+
lambda do
|
152
|
+
@invoke_options.call(:strength => :default)
|
153
|
+
end.should raise_error(ArgumentError)
|
154
|
+
end
|
155
|
+
|
156
|
+
it 'should accept reification option' do
|
157
|
+
bool = @model.bool_var
|
158
|
+
@expect_options.call(nil, bool)
|
159
|
+
@invoke_options.call(:reify => bool)
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
# Help methods for the GecodeR specs.
|
164
|
+
module GecodeR::Specs
|
165
|
+
module SetHelper
|
166
|
+
module_function
|
167
|
+
|
168
|
+
# Returns the arguments that should be used in a partial mock to expect the
|
169
|
+
# specified constant set (possibly an array of arguments).
|
170
|
+
def expect_constant_set(constant_set)
|
171
|
+
if constant_set.kind_of? Range
|
172
|
+
return constant_set.first, constant_set.last
|
173
|
+
elsif constant_set.kind_of? Fixnum
|
174
|
+
constant_set
|
175
|
+
else
|
176
|
+
an_instance_of(Gecode::Raw::IntSet)
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe Gecode::Constraints::Expression do
|
4
|
+
it 'should raise error if it doesn\'t get all parameters for initialization' do
|
5
|
+
lambda do
|
6
|
+
Gecode::Constraints::Expression.new(Gecode::Model.new, :negate => false)
|
7
|
+
end.should raise_error(ArgumentError)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe Gecode::Constraints::IntEnum::Expression do
|
12
|
+
it 'should raise error unless lhs is an int enum' do
|
13
|
+
lambda do
|
14
|
+
Gecode::Constraints::IntEnum::Expression.new(Gecode::Model.new,
|
15
|
+
:lhs => 'foo', :negate => false)
|
16
|
+
end.should raise_error(TypeError)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe Gecode::Constraints::SetEnum::Expression do
|
21
|
+
it 'should raise error unless lhs is a set enum' do
|
22
|
+
lambda do
|
23
|
+
Gecode::Constraints::SetEnum::Expression.new(Gecode::Model.new,
|
24
|
+
:lhs => 'foo', :negate => false)
|
25
|
+
end.should raise_error(TypeError)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe Gecode::Constraints::Int::CompositeStub, ' (not subclassed)' do
|
30
|
+
before do
|
31
|
+
@con = Gecode::Constraints::Int::CompositeStub.new(Gecode::Model.new, {})
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should raise error when calling #constrain_equal' do
|
35
|
+
lambda do
|
36
|
+
@con.instance_eval{ constrain_equal(nil, {}, false) }
|
37
|
+
end.should raise_error(NoMethodError)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe Gecode::Constraints::Constraint, ' (not subclassed)' do
|
42
|
+
before do
|
43
|
+
@con = Gecode::Constraints::Constraint.new(Gecode::Model.new, {})
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'should raise error when calling #post because it\'s not overridden' do
|
47
|
+
lambda{ @con.post }.should raise_error(NoMethodError)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe Gecode::Constraints::Util do
|
52
|
+
it 'should raise error when giving incorrect set to #constant_set_to_params' do
|
53
|
+
lambda do
|
54
|
+
Gecode::Constraints::Util.constant_set_to_params('hello')
|
55
|
+
end.should raise_error(TypeError)
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should raise error when giving incorrect set to #constant_set_to_int_set' do
|
59
|
+
lambda do
|
60
|
+
Gecode::Constraints::Util.constant_set_to_int_set('hello')
|
61
|
+
end.should raise_error(TypeError)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe Gecode::Constraints::CompositeExpression do
|
66
|
+
it 'should raise error if a method doesn\'t exist' do
|
67
|
+
expression = Gecode::Constraints::CompositeExpression.new(
|
68
|
+
Gecode::Constraints::Int::Expression, Gecode::FreeIntVar,
|
69
|
+
lambda{ }, Gecode::Model.new, {:lhs => nil, :negate => false}){}
|
70
|
+
lambda do
|
71
|
+
expression.this_method_does_not_exist
|
72
|
+
end.should raise_error(NoMethodError)
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,139 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
require File.dirname(__FILE__) + '/constraint_helper'
|
3
|
+
|
4
|
+
class CountSampleProblem < Gecode::Model
|
5
|
+
attr :list
|
6
|
+
attr :element
|
7
|
+
attr :target
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@list = int_var_array(4, 0..3)
|
11
|
+
@element = int_var(0..3)
|
12
|
+
@target = int_var(0..4)
|
13
|
+
branch_on @list
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe Gecode::Constraints::IntEnum::Count do
|
18
|
+
before do
|
19
|
+
@model = CountSampleProblem.new
|
20
|
+
@list = @model.list
|
21
|
+
@element = @model.element
|
22
|
+
@target = @model.target
|
23
|
+
|
24
|
+
# Creates an expectation corresponding to the specified input.
|
25
|
+
@expect = lambda do |element, relation, target, strength, reif_var|
|
26
|
+
@model.allow_space_access do
|
27
|
+
target = an_instance_of(Gecode::Raw::IntVar) if target.respond_to? :bind
|
28
|
+
element = an_instance_of(Gecode::Raw::IntVar) if element.respond_to? :bind
|
29
|
+
if reif_var.nil?
|
30
|
+
Gecode::Raw.should_receive(:count).once.with(
|
31
|
+
an_instance_of(Gecode::Raw::Space),
|
32
|
+
an_instance_of(Gecode::Raw::IntVarArray),
|
33
|
+
element, relation, target, strength)
|
34
|
+
else
|
35
|
+
Gecode::Raw.should_receive(:count).once.with(
|
36
|
+
an_instance_of(Gecode::Raw::Space),
|
37
|
+
an_instance_of(Gecode::Raw::IntVarArray),
|
38
|
+
element, Gecode::Raw::IRT_EQ,
|
39
|
+
an_instance_of(Gecode::Raw::IntVar), strength)
|
40
|
+
Gecode::Raw.should_receive(:rel).once.with(
|
41
|
+
an_instance_of(Gecode::Raw::Space),
|
42
|
+
an_instance_of(Gecode::Raw::IntVar), relation,
|
43
|
+
target, an_instance_of(Gecode::Raw::BoolVar), strength)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# For constraint option spec.
|
49
|
+
@invoke_options = lambda do |hash|
|
50
|
+
@list.count(@element).must_be.greater_than(@target, hash)
|
51
|
+
@model.solve!
|
52
|
+
end
|
53
|
+
@expect_options = lambda do |strength, reif_var|
|
54
|
+
@expect.call(@element, Gecode::Raw::IRT_GR, @target, strength, reif_var)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# Various situations that must be handled (4*2 in total). This was originally
|
59
|
+
# written without the repetition (r269), but that interfered with the spec
|
60
|
+
# somehow.
|
61
|
+
|
62
|
+
Gecode::Constraints::Util::RELATION_TYPES.each_pair do |relation, type|
|
63
|
+
it "should translate #{relation} with variable element and target" do
|
64
|
+
@expect.call(@element, type, @target, Gecode::Raw::ICL_DEF, nil)
|
65
|
+
@list.count(@element).must.send(relation, @target)
|
66
|
+
@model.solve!
|
67
|
+
end
|
68
|
+
end
|
69
|
+
Gecode::Constraints::Util::NEGATED_RELATION_TYPES.each_pair do |relation, type|
|
70
|
+
it "should translate negated #{relation} with variable element and target" do
|
71
|
+
@expect.call(@element, type, @target, Gecode::Raw::ICL_DEF, nil)
|
72
|
+
@list.count(@element).must_not.send(relation, @target)
|
73
|
+
@model.solve!
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
Gecode::Constraints::Util::RELATION_TYPES.each_pair do |relation, type|
|
78
|
+
it "should translate #{relation} with variable element and constant target" do
|
79
|
+
@expect.call(@element, type, 2, Gecode::Raw::ICL_DEF, nil)
|
80
|
+
@list.count(@element).must.send(relation, 2)
|
81
|
+
@model.solve!
|
82
|
+
end
|
83
|
+
end
|
84
|
+
Gecode::Constraints::Util::NEGATED_RELATION_TYPES.each_pair do |relation, type|
|
85
|
+
it "should translate negated #{relation} with variable element and constant target" do
|
86
|
+
@expect.call(@element, type, 2, Gecode::Raw::ICL_DEF, nil)
|
87
|
+
@list.count(@element).must_not.send(relation, 2)
|
88
|
+
@model.solve!
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
Gecode::Constraints::Util::RELATION_TYPES.each_pair do |relation, type|
|
93
|
+
it "should translate #{relation} with constant element and constant target" do
|
94
|
+
@expect.call(1, type, 2, Gecode::Raw::ICL_DEF, nil)
|
95
|
+
@list.count(1).must.send(relation, 2)
|
96
|
+
@model.solve!
|
97
|
+
end
|
98
|
+
end
|
99
|
+
Gecode::Constraints::Util::NEGATED_RELATION_TYPES.each_pair do |relation, type|
|
100
|
+
it "should translate negated #{relation} with constant element and constant target" do
|
101
|
+
@expect.call(1, type, 2, Gecode::Raw::ICL_DEF, nil)
|
102
|
+
@list.count(1).must_not.send(relation, 2)
|
103
|
+
@model.solve!
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
Gecode::Constraints::Util::RELATION_TYPES.each_pair do |relation, type|
|
108
|
+
it "should translate #{relation} with constant element and variable target" do
|
109
|
+
@expect.call(1, type, @target, Gecode::Raw::ICL_DEF, nil)
|
110
|
+
@list.count(1).must.send(relation, @target)
|
111
|
+
@model.solve!
|
112
|
+
end
|
113
|
+
end
|
114
|
+
Gecode::Constraints::Util::NEGATED_RELATION_TYPES.each_pair do |relation, type|
|
115
|
+
it "should translate negated #{relation} with constant element and variable target" do
|
116
|
+
@expect.call(1, type, @target, Gecode::Raw::ICL_DEF, nil)
|
117
|
+
@list.count(1).must_not.send(relation, @target)
|
118
|
+
@model.solve!
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
it 'should raise error if the target is of the wrong type' do
|
123
|
+
lambda{ @list.count(@element).must == 'hello' }.should raise_error(
|
124
|
+
TypeError)
|
125
|
+
end
|
126
|
+
|
127
|
+
it 'should raise error on element is of the wrong type' do
|
128
|
+
lambda{ @list.count('foo').must == @target }.should raise_error(
|
129
|
+
TypeError)
|
130
|
+
end
|
131
|
+
|
132
|
+
it 'should constrain the count' do
|
133
|
+
@list.must_be.distinct
|
134
|
+
@list.count(0).must <= 0
|
135
|
+
@model.solve!.should be_nil
|
136
|
+
end
|
137
|
+
|
138
|
+
it_should_behave_like 'constraint with options'
|
139
|
+
end
|
@@ -0,0 +1,218 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
require File.dirname(__FILE__) + '/constraint_helper'
|
3
|
+
|
4
|
+
class DistinctSampleProblem < Gecode::Model
|
5
|
+
attr :vars
|
6
|
+
attr :sets
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@vars = int_var_array(2, 1)
|
10
|
+
@sets = set_var_array(2, [], 0..2)
|
11
|
+
branch_on wrap_enum(@sets)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe Gecode::Constraints::IntEnum::Distinct do
|
16
|
+
before do
|
17
|
+
@model = DistinctSampleProblem.new
|
18
|
+
@invoke_options = lambda do |hash|
|
19
|
+
@model.vars.must_be.distinct(hash)
|
20
|
+
@model.solve!
|
21
|
+
end
|
22
|
+
@expect_options = lambda do |strength, reif_var|
|
23
|
+
Gecode::Raw.should_receive(:distinct).once.with(
|
24
|
+
an_instance_of(Gecode::Raw::Space),
|
25
|
+
an_instance_of(Gecode::Raw::IntVarArray), strength)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should translate into a distinct constraint' do
|
30
|
+
Gecode::Raw.should_receive(:distinct).once.with(
|
31
|
+
an_instance_of(Gecode::Raw::Space),
|
32
|
+
anything, Gecode::Raw::ICL_DEF)
|
33
|
+
@invoke_options.call({})
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should constrain variables to be distinct' do
|
37
|
+
# This won't work well without branching or propagation strengths. So this
|
38
|
+
# just shows that the distinct constraint will cause trivially unsolvable
|
39
|
+
# problems to directly fail.
|
40
|
+
@model.vars.must_be.distinct
|
41
|
+
@model.solve!.should be_nil
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'should not allow negation' do
|
45
|
+
lambda{ @model.vars.must_not_be.distinct }.should raise_error(
|
46
|
+
Gecode::MissingConstraintError)
|
47
|
+
end
|
48
|
+
|
49
|
+
it_should_behave_like 'constraint with strength option'
|
50
|
+
end
|
51
|
+
|
52
|
+
describe Gecode::Constraints::IntEnum::Distinct, ' (with offsets)' do
|
53
|
+
before do
|
54
|
+
@model = DistinctSampleProblem.new
|
55
|
+
@invoke_options = lambda do |hash|
|
56
|
+
@model.vars.with_offsets(1,2).must_be.distinct(hash)
|
57
|
+
@model.solve!
|
58
|
+
end
|
59
|
+
@expect_options = lambda do |strength, reif_var|
|
60
|
+
if reif_var.nil?
|
61
|
+
Gecode::Raw.should_receive(:distinct).once.with(
|
62
|
+
an_instance_of(Gecode::Raw::Space),
|
63
|
+
anything, an_instance_of(Gecode::Raw::IntVarArray), strength)
|
64
|
+
else
|
65
|
+
Gecode::Raw.should_receive(:distinct).once.with(
|
66
|
+
an_instance_of(Gecode::Raw::Space),
|
67
|
+
anything, an_instance_of(Gecode::Raw::IntVarArray), strength,
|
68
|
+
an_instance_of(Gecode::Raw::BoolVar))
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'should translate into a distinct constraint with offsets' do
|
74
|
+
Gecode::Raw.should_receive(:distinct).once.with(
|
75
|
+
an_instance_of(Gecode::Raw::Space),
|
76
|
+
anything, anything, Gecode::Raw::ICL_DEF)
|
77
|
+
@invoke_options.call({})
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'should consider offsets when making variables distinct' do
|
81
|
+
@model.vars.with_offsets(-1,0).must_be.distinct
|
82
|
+
x,y = @model.solve!.vars
|
83
|
+
x.value.should equal(1)
|
84
|
+
y.value.should equal(1)
|
85
|
+
end
|
86
|
+
|
87
|
+
# This tests two distinct in conjunction. It's here because of a bug found.
|
88
|
+
it 'should play nice with normal distinct' do
|
89
|
+
@model.vars.with_offsets(-1,0).must_be.distinct
|
90
|
+
@model.vars.must_be.distinct
|
91
|
+
@model.solve!.should be_nil
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'should accept an array as offsets' do
|
95
|
+
@model.vars.with_offsets([-1,0]).must_be.distinct
|
96
|
+
x,y = @model.solve!.vars
|
97
|
+
x.value.should equal(1)
|
98
|
+
y.value.should equal(1)
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'should not allow negation' do
|
102
|
+
lambda{ @model.vars.with_offsets(1,2).must_not_be.distinct }.should
|
103
|
+
raise_error(Gecode::MissingConstraintError)
|
104
|
+
end
|
105
|
+
|
106
|
+
it_should_behave_like 'constraint with strength option'
|
107
|
+
end
|
108
|
+
|
109
|
+
describe Gecode::Constraints::SetEnum::Distinct do
|
110
|
+
before do
|
111
|
+
@model = DistinctSampleProblem.new
|
112
|
+
@sets = @model.sets
|
113
|
+
@size = 1
|
114
|
+
|
115
|
+
@invoke_options = lambda do |hash|
|
116
|
+
@sets.must_be.distinct(hash.update(:size => @size))
|
117
|
+
@model.solve!
|
118
|
+
end
|
119
|
+
@expect_options = lambda do |strength, reif_var|
|
120
|
+
Gecode::Raw.should_receive(:distinct).once.with(
|
121
|
+
an_instance_of(Gecode::Raw::Space),
|
122
|
+
an_instance_of(Gecode::Raw::SetVarArray), @size)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
it 'should translate into a distinct constraint' do
|
127
|
+
Gecode::Raw.should_receive(:distinct).once.with(
|
128
|
+
an_instance_of(Gecode::Raw::Space),
|
129
|
+
an_instance_of(Gecode::Raw::SetVarArray), @size)
|
130
|
+
@sets.must_be.distinct(:size => @size)
|
131
|
+
@model.solve!
|
132
|
+
end
|
133
|
+
|
134
|
+
it 'should constrain sets to be distinct' do
|
135
|
+
@sets.must_be.distinct(:size => @size)
|
136
|
+
@sets[0].must_be.superset_of 0
|
137
|
+
solution = @model.solve!
|
138
|
+
solution.should_not be_nil
|
139
|
+
set1, set2 = solution.sets
|
140
|
+
set1.value.size.should == @size
|
141
|
+
set2.value.size.should == @size
|
142
|
+
set1.value.should_not == set2.value
|
143
|
+
end
|
144
|
+
|
145
|
+
it 'should not allow negation' do
|
146
|
+
lambda{ @sets.must_not_be.distinct(:size => @size) }.should raise_error(
|
147
|
+
Gecode::MissingConstraintError)
|
148
|
+
end
|
149
|
+
|
150
|
+
it 'should not allow options other than :size' do
|
151
|
+
lambda do
|
152
|
+
@sets.must_be.distinct(:size => @size, :foo => 17)
|
153
|
+
end.should raise_error(ArgumentError)
|
154
|
+
end
|
155
|
+
|
156
|
+
it 'should raise error if :size is not specified' do
|
157
|
+
lambda{ @sets.must_be.distinct }.should raise_error(ArgumentError)
|
158
|
+
end
|
159
|
+
|
160
|
+
it_should_behave_like 'non-reifiable set constraint'
|
161
|
+
end
|
162
|
+
|
163
|
+
describe Gecode::Constraints::SetEnum::Distinct, ' (at most one)' do
|
164
|
+
before do
|
165
|
+
@model = DistinctSampleProblem.new
|
166
|
+
@sets = @model.sets
|
167
|
+
@size = 2
|
168
|
+
|
169
|
+
@invoke_options = lambda do |hash|
|
170
|
+
@sets.must.at_most_share_one_element hash.update(:size => @size)
|
171
|
+
@model.solve!
|
172
|
+
end
|
173
|
+
@expect_options = lambda do |strength, reif_var|
|
174
|
+
Gecode::Raw.should_receive(:atmostOne).once.with(
|
175
|
+
an_instance_of(Gecode::Raw::Space),
|
176
|
+
an_instance_of(Gecode::Raw::SetVarArray), @size)
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
it 'should translate into a atmostOne constraint' do
|
181
|
+
Gecode::Raw.should_receive(:atmostOne).once.with(
|
182
|
+
an_instance_of(Gecode::Raw::Space),
|
183
|
+
an_instance_of(Gecode::Raw::SetVarArray), @size)
|
184
|
+
@sets.must.at_most_share_one_element(:size => @size)
|
185
|
+
@model.solve!
|
186
|
+
end
|
187
|
+
|
188
|
+
it 'should constrain sets to have at most one element in common' do
|
189
|
+
@sets.must.at_most_share_one_element(:size => @size)
|
190
|
+
@sets[0].must_not_be.superset_of 0
|
191
|
+
solution = @model.solve!
|
192
|
+
solution.should_not be_nil
|
193
|
+
set1, set2 = solution.sets
|
194
|
+
set1.value.size.should == @size
|
195
|
+
set2.value.size.should == @size
|
196
|
+
(set1.value.to_a & set2.value.to_a).size.should <= 1
|
197
|
+
end
|
198
|
+
|
199
|
+
it 'should not allow negation' do
|
200
|
+
lambda do
|
201
|
+
@sets.must_not.at_most_share_one_element(:size => @size)
|
202
|
+
end.should raise_error(Gecode::MissingConstraintError)
|
203
|
+
end
|
204
|
+
|
205
|
+
it 'should not allow options other than :size' do
|
206
|
+
lambda do
|
207
|
+
@sets.must.at_most_share_one_element(:size => @size, :foo => 17)
|
208
|
+
end.should raise_error(ArgumentError)
|
209
|
+
end
|
210
|
+
|
211
|
+
it 'should raise error if :size is not specified' do
|
212
|
+
lambda do
|
213
|
+
@sets.must.at_most_share_one_element
|
214
|
+
end.should raise_error(ArgumentError)
|
215
|
+
end
|
216
|
+
|
217
|
+
it_should_behave_like 'non-reifiable set constraint'
|
218
|
+
end
|