def test_call_offset(self):
     """Call with an offset in the expected bases.
     """
     vals = [100.0, None, None, None]
     c, _, _ = compare_calls(self._calls(1, vals), self._expected(2, vals), offset=-1)
     assert c.get(100.0, {}).get("correct", 0) == 1
     c, _, _ = compare_calls(self._calls(4, vals), self._expected(2, vals), offset=2)
     assert c.get(100.0, {}).get("correct", 0) == 1
    def test_call_multiple(self):
        """Test for incorrect calls with multiple samples.
        """
        vals = [95.0, 5.0, None, None]
        vals2 = [95.0, 4.0, 1.0, None]

        pairs = [(vals2, vals), (vals, vals)]
        expect = [(5.0, "wrong"), (5.0, "correct")]
        for (one, two), (e1, e2) in zip(pairs, expect):
            c, _, _ = compare_calls(self._calls(1, one), self._expected(1, two))
            assert c.get(e1, {}).get(e2, 0) == 1, (one, two, c, e1, e2)
    def test_wrong_positions(self):
        """Report the positions of incorrect calls.
        """
        vals = [95.0, 5.0, None, None]
        vals2 = [95.0, 4.0, None, None]
        vals3 = [100.0, 4.0, 1.0, None]

        pairs = [(vals2, vals), (vals3, vals)]
        expect = [(5.0, []), (5.0, [("", 1)])]
        for (one, two), (e1, e2) in zip(pairs, expect):
            _, _, w = compare_calls(self._calls(1, one), self._expected(1, two))
            assert w.get(e1, []) == e2, (one, two, w, e1, e2)
    def test_call_percents(self):
        """Retrieve percentages of calls
        """
        vals = [95.0, 5.0, None, None]
        vals2 = [95.0, 4.0, None, None]
        vals3 = [100.0, 4.0, 1.0, None]

        pairs = [(vals2, vals), (vals3, vals)]
        expect = [(5.0, [4.0]), (5.0, [])]
        for (one, two), (e1, e2) in zip(pairs, expect):
            _, p, _ = compare_calls(self._calls(1, one), self._expected(1, two))
            assert p.get(e1, []) == e2, (one, two, p, e1, e2)
 def test_call_simple(self):
     """Basic mixed variation sample calling.
     """
     vals = [100.0, None, None, None]
     vals2 = [None, 100.0, None, None]
     vals3 = [None, None, 50.0, 50.0]
     vals4 = [50.0, 50.0, None, None]
     pairs = [(vals, vals), (vals2, vals), (vals4, vals),
              (vals3, vals), (vals3, vals3), (vals4, vals3),
              (vals, vals4), (vals, vals3)]
     expect = [(100.0, "correct"), (100.0, "wrong"), (100.0, "partial"),
               (100.0, "wrong"), (50.0, "correct"), (50.0, "wrong"),
               (50.0, "partial"), (50.0, "wrong")]
     for (one, two), (e1, e2) in zip(pairs, expect):
         c, _, _ = compare_calls(self._calls(1, one), self._expected(1, two))
         assert c.get(e1, {}).get(e2, 0) == 1, (one, two, c, e1, e2)