Skip to content
This repository was archived by the owner on Jul 17, 2024. It is now read-only.

Commit

Permalink
feat: Support custom indictments and fully implement the ScoreExplana…
Browse files Browse the repository at this point in the history
…tion and ScoreAnalysis API (#38)

- Choose to use properties for the ScoreExplanation and ScoreAnalysis
  API, to make its usage more Pythonic (as `a.b.c` is more Pythonic
  then `a.get_b().get_c()`

- Include missing methods in the AssertionError for the API check test
  • Loading branch information
Christopher-Chianelli authored Apr 22, 2024
1 parent ba56c9a commit d0a5811
Show file tree
Hide file tree
Showing 8 changed files with 736 additions and 268 deletions.
86 changes: 43 additions & 43 deletions tests/test_collectors.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,15 +60,15 @@ def define_constraints(constraint_factory: ConstraintFactory):
entity_a.value = value_1
entity_b.value = value_1

assert score_manager.explain(problem).get_score() == SimpleScore.of(1)
assert score_manager.explain(problem).score == SimpleScore.of(1)

entity_a.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(1)
assert score_manager.explain(problem).score == SimpleScore.of(1)

entity_b.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(2)
assert score_manager.explain(problem).score == SimpleScore.of(2)


def test_max():
Expand All @@ -93,15 +93,15 @@ def define_constraints(constraint_factory: ConstraintFactory):
entity_a.value = value_1
entity_b.value = value_1

assert score_manager.explain(problem).get_score() == SimpleScore.of(1)
assert score_manager.explain(problem).score == SimpleScore.of(1)

entity_a.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(2)
assert score_manager.explain(problem).score == SimpleScore.of(2)

entity_b.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(2)
assert score_manager.explain(problem).score == SimpleScore.of(2)


def test_sum():
Expand All @@ -126,15 +126,15 @@ def define_constraints(constraint_factory: ConstraintFactory):
entity_a.value = value_1
entity_b.value = value_1

assert score_manager.explain(problem).get_score() == SimpleScore.of(2)
assert score_manager.explain(problem).score == SimpleScore.of(2)

entity_a.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(3)
assert score_manager.explain(problem).score == SimpleScore.of(3)

entity_b.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(4)
assert score_manager.explain(problem).score == SimpleScore.of(4)


def test_average():
Expand All @@ -159,15 +159,15 @@ def define_constraints(constraint_factory: ConstraintFactory):
entity_a.value = value_1
entity_b.value = value_1

assert score_manager.explain(problem).get_score() == SimpleScore.of(10)
assert score_manager.explain(problem).score == SimpleScore.of(10)

entity_a.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(15)
assert score_manager.explain(problem).score == SimpleScore.of(15)

entity_b.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(20)
assert score_manager.explain(problem).score == SimpleScore.of(20)


def test_count():
Expand Down Expand Up @@ -195,7 +195,7 @@ def define_constraints(constraint_factory: ConstraintFactory):
entity_a2.value = value_1
entity_b.value = value_1

assert score_manager.explain(problem).get_score() == SimpleScore.of(2)
assert score_manager.explain(problem).score == SimpleScore.of(2)


def test_count_distinct():
Expand All @@ -220,15 +220,15 @@ def define_constraints(constraint_factory: ConstraintFactory):
entity_a.value = value_1
entity_b.value = value_1

assert score_manager.explain(problem).get_score() == SimpleScore.of(1)
assert score_manager.explain(problem).score == SimpleScore.of(1)

entity_b.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(2)
assert score_manager.explain(problem).score == SimpleScore.of(2)

entity_a.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(1)
assert score_manager.explain(problem).score == SimpleScore.of(1)


def test_to_consecutive_sequences():
Expand Down Expand Up @@ -271,23 +271,23 @@ def define_constraints(constraint_factory: ConstraintFactory):
entity_d.value = value_7
entity_e.value = value_9

assert score_manager.explain(problem).get_score().score() == 5
assert score_manager.explain(problem).score.score() == 5

entity_a.value = value_1
entity_b.value = value_2
entity_c.value = value_3
entity_d.value = value_4
entity_e.value = value_5

assert score_manager.explain(problem).get_score().score() == 25
assert score_manager.explain(problem).score.score() == 25

entity_a.value = value_1
entity_b.value = value_2
entity_c.value = value_3
entity_d.value = value_5
entity_e.value = value_6

assert score_manager.explain(problem).get_score().score() == 13
assert score_manager.explain(problem).score.score() == 13


def test_to_list():
Expand All @@ -312,15 +312,15 @@ def define_constraints(constraint_factory: ConstraintFactory):
entity_a.value = value_1
entity_b.value = value_1

assert score_manager.explain(problem).get_score() == SimpleScore.of(2)
assert score_manager.explain(problem).score == SimpleScore.of(2)

entity_b.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(2)
assert score_manager.explain(problem).score == SimpleScore.of(2)

entity_a.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(2)
assert score_manager.explain(problem).score == SimpleScore.of(2)


def test_to_set():
Expand All @@ -345,15 +345,15 @@ def define_constraints(constraint_factory: ConstraintFactory):
entity_a.value = value_1
entity_b.value = value_1

assert score_manager.explain(problem).get_score() == SimpleScore.of(1)
assert score_manager.explain(problem).score == SimpleScore.of(1)

entity_b.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(2)
assert score_manager.explain(problem).score == SimpleScore.of(2)

entity_a.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(1)
assert score_manager.explain(problem).score == SimpleScore.of(1)


def test_to_map():
Expand All @@ -379,15 +379,15 @@ def define_constraints(constraint_factory: ConstraintFactory):
entity_a.value = value_1
entity_b.value = value_1

assert score_manager.explain(problem).get_score() == SimpleScore.of(1)
assert score_manager.explain(problem).score == SimpleScore.of(1)

entity_b.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(2)
assert score_manager.explain(problem).score == SimpleScore.of(2)

entity_a.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(0)
assert score_manager.explain(problem).score == SimpleScore.of(0)


def test_to_sorted_set():
Expand All @@ -412,15 +412,15 @@ def define_constraints(constraint_factory: ConstraintFactory):
entity_a.value = value_1
entity_b.value = value_1

assert score_manager.explain(problem).get_score() == SimpleScore.of(1)
assert score_manager.explain(problem).score == SimpleScore.of(1)

entity_b.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(1)
assert score_manager.explain(problem).score == SimpleScore.of(1)

entity_a.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(2)
assert score_manager.explain(problem).score == SimpleScore.of(2)


def test_to_sorted_map():
Expand All @@ -447,19 +447,19 @@ def define_constraints(constraint_factory: ConstraintFactory):
entity_a.value = value_1
entity_b.value = value_1

assert score_manager.explain(problem).get_score() == SimpleScore.of(1)
assert score_manager.explain(problem).score == SimpleScore.of(1)

entity_b.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(0)
assert score_manager.explain(problem).score == SimpleScore.of(0)

entity_a.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(0)
assert score_manager.explain(problem).score == SimpleScore.of(0)

entity_b.value = value_1

assert score_manager.explain(problem).get_score() == SimpleScore.of(2)
assert score_manager.explain(problem).score == SimpleScore.of(2)


def test_conditionally():
Expand Down Expand Up @@ -487,7 +487,7 @@ def define_constraints(constraint_factory: ConstraintFactory):
entity_a2.value = value_1
entity_b.value = value_1

assert score_manager.explain(problem).get_score() == SimpleScore.of(2)
assert score_manager.explain(problem).score == SimpleScore.of(2)


def test_compose():
Expand Down Expand Up @@ -517,15 +517,15 @@ def define_constraints(constraint_factory: ConstraintFactory):
entity_a.value = value_1
entity_b.value = value_1

assert score_manager.explain(problem).get_score() == SimpleScore.of(11)
assert score_manager.explain(problem).score == SimpleScore.of(11)

entity_a.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(21)
assert score_manager.explain(problem).score == SimpleScore.of(21)

entity_b.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(22)
assert score_manager.explain(problem).score == SimpleScore.of(22)


def test_collect_and_then():
Expand Down Expand Up @@ -553,15 +553,15 @@ def define_constraints(constraint_factory: ConstraintFactory):
entity_a.value = value_1
entity_b.value = value_1

assert score_manager.explain(problem).get_score() == SimpleScore.of(2)
assert score_manager.explain(problem).score == SimpleScore.of(2)

entity_a.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(2)
assert score_manager.explain(problem).score == SimpleScore.of(2)

entity_b.value = value_2

assert score_manager.explain(problem).get_score() == SimpleScore.of(4)
assert score_manager.explain(problem).score == SimpleScore.of(4)


def test_flatten_last():
Expand All @@ -584,4 +584,4 @@ def define_constraints(constraint_factory: ConstraintFactory):
problem = Solution([entity_a], [value_1])
entity_a.value = value_1

assert score_manager.explain(problem).get_score() == SimpleScore.of(3)
assert score_manager.explain(problem).score == SimpleScore.of(3)
Loading

0 comments on commit d0a5811

Please sign in to comment.