@@ -147,12 +147,17 @@ def _make_plotline_no_rank(id: str, ptype: str = "serialized") -> Plotline:
147147
148148class TestComputeRanks :
149149 def test_serial_assigns_a_b_c (self ):
150- """Most events → A, second → B, rest → C."""
150+ """Most events → A, second → B, rest → C. Span must meet thresholds. """
151151 ctx = SeriesContext (format = "serial" , story_engine = "x" , genre = "drama" )
152152 lines = [_make_plotline_no_rank ("big" ), _make_plotline_no_rank ("mid" ), _make_plotline_no_rank ("small" )]
153+ # 4 episodes so span fractions are: big=4/4=100%, mid=3/4=75%, small=2/4=50%
153154 episodes = [
154- _make_episode ("S01E01" , ["big" , "big" , "big" , "mid" , "mid" , "small" ]),
155+ _make_episode ("S01E01" , ["big" , "big" , "mid" , "small" ]),
156+ _make_episode ("S01E02" , ["big" , "big" , "mid" , "small" ]),
157+ _make_episode ("S01E03" , ["big" , "mid" ]),
158+ _make_episode ("S01E04" , ["big" ]),
155159 ]
160+ compute_span (lines , episodes )
156161 compute_ranks (lines , episodes , ctx )
157162 assert lines [0 ].computed_rank == "A"
158163 assert lines [1 ].computed_rank == "B"
@@ -163,6 +168,7 @@ def test_runner_gets_no_rank(self):
163168 runner = _make_plotline_no_rank ("bg" , ptype = "runner" )
164169 main = _make_plotline_no_rank ("main" )
165170 episodes = [_make_episode ("S01E01" , ["main" , "main" ])]
171+ compute_span ([runner , main ], episodes )
166172 compute_ranks ([runner , main ], episodes , ctx )
167173 assert runner .computed_rank is None
168174 assert main .computed_rank == "A"
@@ -173,6 +179,7 @@ def test_procedural_case_of_week_gets_a(self):
173179 arc = _make_plotline_no_rank ("arc" )
174180 # arc has more events, but cotw is fixed at A for procedural
175181 episodes = [_make_episode ("S01E01" , ["arc" , "arc" , "arc" , "case" ])]
182+ compute_span ([cotw , arc ], episodes )
176183 compute_ranks ([cotw , arc ], episodes , ctx )
177184 assert cotw .computed_rank == "A"
178185 assert arc .computed_rank == "B"
@@ -182,6 +189,7 @@ def test_hybrid_case_of_week_gets_b(self):
182189 cotw = _make_plotline_no_rank ("case" , ptype = "case_of_the_week" )
183190 arc = _make_plotline_no_rank ("arc" )
184191 episodes = [_make_episode ("S01E01" , ["arc" , "case" , "case" ])]
192+ compute_span ([cotw , arc ], episodes )
185193 compute_ranks ([cotw , arc ], episodes , ctx )
186194 assert cotw .computed_rank == "B"
187195 assert arc .computed_rank == "A"
@@ -203,6 +211,7 @@ def test_also_affects_counted_equally(self):
203211 ],
204212 theme = "t" ,
205213 )
214+ compute_span ([main , side ], [ep ])
206215 compute_ranks ([main , side ], [ep ], ctx )
207216 # main: 2 primary + 0 AA = 2. side: 1 primary + 2 AA = 3. side wins.
208217 assert side .computed_rank == "A"
0 commit comments