@@ -1105,14 +1105,53 @@ fn encode_mul_naive(env: &mut EncoderEnv, x: IntVar, y: IntVar, m: IntVar) {
11051105 }
11061106}
11071107
1108- // TODO: add tests for ClauseSet
11091108#[ cfg( test) ]
11101109mod tests {
11111110 use super :: super :: {
1112- config:: Config , domain:: Domain , norm_csp:: IntVarRepresentation , norm_csp:: NormCSP , sat:: SAT ,
1111+ config:: Config , domain:: Domain , norm_csp:: IntVarRepresentation , norm_csp:: NormCSP ,
1112+ sat:: Var , sat:: SAT ,
11131113 } ;
11141114 use super :: * ;
11151115
1116+ #[ test]
1117+ fn test_clause_set ( ) {
1118+ let mut c = ClauseSet :: new ( ) ;
1119+
1120+ c. push ( & [ Lit :: new ( Var ( 4 ) , false ) , Lit :: new ( Var ( 2 ) , true ) ] ) ;
1121+ c. push ( & [
1122+ Lit :: new ( Var ( 1 ) , false ) ,
1123+ Lit :: new ( Var ( 2 ) , false ) ,
1124+ Lit :: new ( Var ( 3 ) , true ) ,
1125+ ] ) ;
1126+
1127+ assert_eq ! ( c. len( ) , 2 ) ;
1128+ assert_eq ! ( & c[ 0 ] , & [ Lit :: new( Var ( 4 ) , false ) , Lit :: new( Var ( 2 ) , true ) ] ) ;
1129+ assert_eq ! (
1130+ & c[ 1 ] ,
1131+ & [
1132+ Lit :: new( Var ( 1 ) , false ) ,
1133+ Lit :: new( Var ( 2 ) , false ) ,
1134+ Lit :: new( Var ( 3 ) , true )
1135+ ]
1136+ ) ;
1137+
1138+ let mut c2 = ClauseSet :: new ( ) ;
1139+ c2. push ( & [ Lit :: new ( Var ( 5 ) , false ) , Lit :: new ( Var ( 1 ) , true ) ] ) ;
1140+ c2. append ( c) ;
1141+
1142+ assert_eq ! ( c2. len( ) , 3 ) ;
1143+ assert_eq ! ( & c2[ 0 ] , & [ Lit :: new( Var ( 5 ) , false ) , Lit :: new( Var ( 1 ) , true ) ] ) ;
1144+ assert_eq ! ( & c2[ 1 ] , & [ Lit :: new( Var ( 4 ) , false ) , Lit :: new( Var ( 2 ) , true ) ] ) ;
1145+ assert_eq ! (
1146+ & c2[ 2 ] ,
1147+ & [
1148+ Lit :: new( Var ( 1 ) , false ) ,
1149+ Lit :: new( Var ( 2 ) , false ) ,
1150+ Lit :: new( Var ( 3 ) , true )
1151+ ]
1152+ ) ;
1153+ }
1154+
11161155 pub ( super ) struct EncoderTester {
11171156 norm_csp : NormCSP ,
11181157 sat : SAT ,
0 commit comments