Skip to content

Commit efecb6a

Browse files
committed
chore: add concat overloads
1 parent 48a7a6a commit efecb6a

File tree

2 files changed

+256
-56
lines changed

2 files changed

+256
-56
lines changed

tests/test_constraint_streams.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,41 @@ def define_constraints(constraint_factory: ConstraintFactory):
436436

437437
assert score_manager.explain(problem).score.score == 1
438438

439+
def test_complement():
440+
@constraint_provider
441+
def define_constraints(constraint_factory: ConstraintFactory):
442+
return [
443+
constraint_factory.for_each(Entity)
444+
.filter(lambda e: e.value.number == 1)
445+
.complement(Entity)
446+
.reward(SimpleScore.ONE)
447+
.as_constraint('Count')
448+
]
449+
450+
score_manager = create_score_manager(define_constraints)
451+
entity_a: Entity = Entity('A')
452+
entity_b: Entity = Entity('B')
453+
454+
value_1 = Value(1)
455+
value_2 = Value(2)
456+
value_3 = Value(3)
457+
458+
problem = Solution([entity_a, entity_b], [value_1, value_2, value_3])
459+
460+
assert score_manager.explain(problem).score.score == 0
461+
462+
entity_a.value = value_1
463+
464+
assert score_manager.explain(problem).score.score == 1
465+
466+
entity_b.value = value_2
467+
468+
assert score_manager.explain(problem).score.score == 2
469+
470+
entity_b.value = value_3
471+
472+
assert score_manager.explain(problem).score.score == 2
473+
439474

440475
def test_custom_indictments():
441476
@dataclass(unsafe_hash=True)

0 commit comments

Comments
 (0)