Skip to content

Commit ac24040

Browse files
committed
add test for ClauseSet
1 parent 3667cbf commit ac24040

1 file changed

Lines changed: 41 additions & 2 deletions

File tree

cspuz_core/src/encoder/mod.rs

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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)]
11101109
mod 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

Comments
 (0)