/** * @param args * @param annotations */ public INConstraint(BOp[] args, Map<String, Object> annotations) { super(args, annotations); final IVariable<T> var = getVariable(); if (var == null) throw new IllegalArgumentException(); final IConstant<T>[] set = getSet(); if (set == null) throw new IllegalArgumentException(); if (set.length == 0) throw new IllegalArgumentException(); }
/** * @see Annotations#VARIABLE */ @SuppressWarnings("unchecked") public IVariable<T> getVariable() { return (IVariable<T>) getProperty(Annotations.VARIABLE); }
/** * Unit test for {@link INConstraint#getSet()} */ public void testGetSet () { Var<?> x = Var.var ( "x" ) ; IConstant vals [] = new Constant [] { new Constant<Integer> ( 1 ) } ; INConstraint op = newINConstraint ( x, vals ) ; assertTrue ( Arrays.equals ( vals, op.getSet () ) ) ; }
/** * Unit test for {@link INConstraint#getVariable()} */ public void testGetVariable () { Var<?> x = Var.var ( "x" ) ; IConstant vals [] = new Constant [] { new Constant<Integer> ( 1 ) } ; INConstraint op = newINConstraint ( x, vals ) ; assertTrue ( x.equals ( op.getVariable () ) ) ; }
/** * Unit test for {@link INConstraint#accept(IBindingSet)} */ public void testAccept () { Var<?> x = Var.var ( "x" ) ; Constant<Integer> val1 = new Constant<Integer> ( 1 ) ; Constant<Integer> val2 = new Constant<Integer> ( 2 ) ; Constant<Integer> val3 = new Constant<Integer> ( 3 ) ; INConstraint op = newINConstraint ( x, new IConstant [] { val1, val2 } ) ; IBindingSet in = new ListBindingSet ( new IVariable<?> [] { x }, new IConstant [] { val1 } ) ; IBindingSet notin = new ListBindingSet ( new IVariable<?> [] { x }, new IConstant [] { val3 } ) ; IBindingSet nb = new ListBindingSet ( new IVariable<?> [] {}, new IConstant [] {} ) ; assertTrue ( op.get ( in ) ) ; assertFalse ( op.get ( notin ) ) ; // FIXME Modify to assertFalse() - unbound variables should fail constraints assertTrue ( op.get ( nb ) ) ; }
/** * Unit test for {@link INConstraint#getSet()} */ public void testGetSet () { Var<?> x = Var.var ( "x" ) ; IConstant vals [] = new Constant [] { new Constant<Integer> ( 1 ) } ; INConstraint op = newINConstraint ( x, vals ) ; assertTrue ( Arrays.equals ( vals, op.getSet () ) ) ; }
/** * Unit test for {@link INConstraint#getVariable()} */ public void testGetVariable () { Var<?> x = Var.var ( "x" ) ; IConstant vals [] = new Constant [] { new Constant<Integer> ( 1 ) } ; INConstraint op = newINConstraint ( x, vals ) ; assertTrue ( x.equals ( op.getVariable () ) ) ; }
/** * Unit test for {@link INConstraint#accept(IBindingSet)} */ public void testAccept () { Var<?> x = Var.var ( "x" ) ; Constant<Integer> val1 = new Constant<Integer> ( 1 ) ; Constant<Integer> val2 = new Constant<Integer> ( 2 ) ; Constant<Integer> val3 = new Constant<Integer> ( 3 ) ; INConstraint op = newINConstraint ( x, new IConstant [] { val1, val2 } ) ; IBindingSet in = new ListBindingSet ( new IVariable<?> [] { x }, new IConstant [] { val1 } ) ; IBindingSet notin = new ListBindingSet ( new IVariable<?> [] { x }, new IConstant [] { val3 } ) ; IBindingSet nb = new ListBindingSet ( new IVariable<?> [] {}, new IConstant [] {} ) ; assertTrue ( op.get ( in ) ) ; assertFalse ( op.get ( notin ) ) ; // FIXME Modify to assertFalse() - unbound variables should fail constraints assertTrue ( op.get ( nb ) ) ; }
/** * @param args * @param annotations */ public INConstraint(BOp[] args, Map<String, Object> annotations) { super(args, annotations); final IVariable<T> var = getVariable(); if (var == null) throw new IllegalArgumentException(); final IConstant<T>[] set = getSet(); if (set == null) throw new IllegalArgumentException(); if (set.length == 0) throw new IllegalArgumentException(); }
/** * @see Annotations#SET */ @SuppressWarnings("unchecked") public IConstant<T>[] getSet() { return (IConstant<T>[]) getProperty(Annotations.SET); }
/** * Unit test for {@link INConstraint#accept(IBindingSet)} */ public void testAccept () { super.testAccept () ; // specific test because the implementation does a sort, etc... Var<?> x = Var.var ( "x" ) ; IConstant [] vals = new IConstant [ 100 ] ; for ( int i = 0; i < vals.length; i++ ) vals [ i ] = new Constant<Integer> ( i ) ; List<IConstant> list = Arrays.asList ( vals ) ; Collections.shuffle ( list ) ; vals = list.toArray ( vals ) ; INConstraint op = new INBinarySearch ( x, vals ) ; assertTrue ( op.get ( new ListBindingSet ( new IVariable<?> [] { x }, new IConstant [] { new Constant<Integer> ( 21 ) } ) ) ) ; assertTrue ( op.get ( new ListBindingSet ( new IVariable<?> [] { x }, new IConstant [] { new Constant<Integer> ( 37 ) } ) ) ) ; assertTrue ( op.get ( new ListBindingSet ( new IVariable<?> [] { x }, new IConstant [] { new Constant<Integer> ( 75 ) } ) ) ) ; assertFalse ( op.get ( new ListBindingSet ( new IVariable<?> [] { x }, new IConstant [] { new Constant<Integer> ( 101 ) } ) ) ) ; }
/** * @see Annotations#VARIABLE */ @SuppressWarnings("unchecked") public IVariable<T> getVariable() { return (IVariable<T>) getProperty(Annotations.VARIABLE); }
/** * Unit test for {@link INConstraint#accept(IBindingSet)} */ public void testAccept () { super.testAccept () ; // specific test because the implementation does a sort, etc... Var<?> x = Var.var ( "x" ) ; IConstant [] vals = new IConstant [ 100 ] ; for ( int i = 0; i < vals.length; i++ ) vals [ i ] = new Constant<Integer> ( i ) ; List<IConstant> list = Arrays.asList ( vals ) ; Collections.shuffle ( list ) ; vals = list.toArray ( vals ) ; INConstraint op = new INBinarySearch ( x, vals ) ; assertTrue ( op.get ( new ListBindingSet ( new IVariable<?> [] { x }, new IConstant [] { new Constant<Integer> ( 21 ) } ) ) ) ; assertTrue ( op.get ( new ListBindingSet ( new IVariable<?> [] { x }, new IConstant [] { new Constant<Integer> ( 37 ) } ) ) ) ; assertTrue ( op.get ( new ListBindingSet ( new IVariable<?> [] { x }, new IConstant [] { new Constant<Integer> ( 75 ) } ) ) ) ; assertFalse ( op.get ( new ListBindingSet ( new IVariable<?> [] { x }, new IConstant [] { new Constant<Integer> ( 101 ) } ) ) ) ; }
/** * @see Annotations#SET */ @SuppressWarnings("unchecked") public IConstant<T>[] getSet() { return (IConstant<T>[]) getProperty(Annotations.SET); }