Пример #1
0
    def test_multiple_ratings(s):
        r1, r2 = 1.0, 0.5
        songs = [Fakesong({"~#rating": r1}), Fakesong({"~#rating": r2})]
        album = Album(songs[0])
        album.songs = set(songs)
        # Standard averaging still available
        s.failUnlessEqual(album("~#rating:avg"), avg([r1, r2]))

        # C = 0.0 => emulate arithmetic mean
        config.set("settings", "bayesian_rating_factor", 0.0)
        s.failUnlessEqual(album("~#rating:bav"), album("~#rating:avg"))
Пример #2
0
    def test_multiple_ratings(s):
        r1, r2 = 1.0, 0.5
        songs = [Fakesong({"~#rating": r1}), Fakesong({"~#rating": r2})]
        album = Album(songs[0])
        album.songs = set(songs)
        # Standard averaging still available
        s.failUnlessEqual(album("~#rating:avg"), avg([r1, r2]))

        # C = 0.0 => emulate arithmetic mean
        config.set("settings", "bayesian_rating_factor", 0.0)
        s.failUnlessEqual(album("~#rating:bav"), album("~#rating:avg"))
Пример #3
0
    def test_bayesian_multiple_ratings(s):
        # separated from above to avoid caching
        c, r1, r2 = 5, 1.0, 0.5
        songs = [Fakesong({"~#rating": r1}), Fakesong({"~#rating": r2})]
        album = Album(songs[0])
        album.songs = set(songs)

        config.set("settings", "bayesian_rating_factor", float(c))
        s.failUnlessEqual(config.getfloat("settings", "bayesian_rating_factor"), float(c))
        expected = avg(c * [config.RATINGS.default] + [r1, r2])
        s.failUnlessEqual(album("~#rating:bav"), expected)
        s.failUnlessEqual(album("~#rating"), expected)
Пример #4
0
    def test_bayesian_multiple_ratings(s):
        # separated from above to avoid caching
        c, r1, r2 = 5, 1.0, 0.5
        songs = [Fakesong({"~#rating": r1}), Fakesong({"~#rating": r2})]
        album = Album(songs[0])
        album.songs = set(songs)

        config.set("settings", "bayesian_rating_factor", float(c))
        s.failUnlessEqual(
            config.getfloat("settings", "bayesian_rating_factor"), float(c))
        expected = avg(c * [config.RATINGS.default] + [r1, r2])
        s.failUnlessEqual(album("~#rating:bav"), expected)
        s.failUnlessEqual(album("~#rating"), expected)
Пример #5
0
 def test_bayesian_average(s):
     bav = bayesian_average
     l = [1, 2, 3, 4]
     a = avg(l)
     # c=0 => this becomes a mean regardless of m
     s.failUnlessEqual(a, bav(l, 0, 0))
     s.failUnlessEqual(a, bav(l, 0, 999))
     # c=1, m = a (i.e. just adding another mean score) => no effect
     s.failUnlessEqual(a, bav(l, 1, a))
     # Harder ones
     s.failUnlessEqual(20.0 / 9, bav(l, 5, 2))
     expected = 40.0 / 14
     s.failUnlessEqual(expected, bav(l, 10, 3))
     # Also check another iterable
     s.failUnlessEqual(expected, bav(tuple(l), 10, 3))
Пример #6
0
 def test_bayesian_average(s):
     bav = bayesian_average
     l = [1, 2, 3, 4]
     a = avg(l)
     # c=0 => this becomes a mean regardless of m
     s.failUnlessEqual(a, bav(l, 0, 0))
     s.failUnlessEqual(a, bav(l, 0, 999))
     # c=1, m = a (i.e. just adding another mean score) => no effect
     s.failUnlessEqual(a, bav(l, 1, a))
     # Harder ones
     s.failUnlessEqual(20.0 / 9, bav(l, 5, 2))
     expected = 40.0 / 14
     s.failUnlessEqual(expected, bav(l, 10, 3))
     # Also check another iterable
     s.failUnlessEqual(expected, bav(tuple(l), 10, 3))
Пример #7
0
    def test_numeric_ops(s):
        songs = NUMERIC_SONGS
        with s.wrap("playlist") as pl:
            pl.extend(songs)

            s.failUnlessEqual(pl.get("~#length"), 12)
            s.failUnlessEqual(pl.get("~#length:sum"), 12)
            s.failUnlessEqual(pl.get("~#length:max"), 7)
            s.failUnlessEqual(pl.get("~#length:min"), 1)
            s.failUnlessEqual(pl.get("~#length:avg"), 4)
            s.failUnlessEqual(pl.get("~#length:foo"), 0)

            s.failUnlessEqual(pl.get("~#rating:avg"), avg([0.1, 0.3, 0.5]))

            s.failUnlessEqual(pl.get("~#filesize"), 303)

            s.failUnlessEqual(pl.get("~#added"), 7)
            s.failUnlessEqual(pl.get("~#lastplayed"), 88)
            s.failUnlessEqual(pl.get("~#bitrate"), 200)
            s.failUnlessEqual(pl.get("~#year"), 33)
            s.failUnlessEqual(pl.get("~#rating"), 0.3)
            s.failUnlessEqual(pl.get("~#originalyear"), 2002)
Пример #8
0
    def test_numeric_ops(s):
        songs = NUMERIC_SONGS
        with s.wrap("playlist") as pl:
            pl.extend(songs)

            s.failUnlessEqual(pl.get("~#length"), 12)
            s.failUnlessEqual(pl.get("~#length:sum"), 12)
            s.failUnlessEqual(pl.get("~#length:max"), 7)
            s.failUnlessEqual(pl.get("~#length:min"), 1)
            s.failUnlessEqual(pl.get("~#length:avg"), 4)
            s.failUnlessEqual(pl.get("~#length:foo"), 0)

            s.failUnlessEqual(pl.get("~#rating:avg"), avg([0.1, 0.3, 0.5]))

            s.failUnlessEqual(pl.get("~#filesize"), 303)

            s.failUnlessEqual(pl.get("~#added"), 7)
            s.failUnlessEqual(pl.get("~#lastplayed"), 88)
            s.failUnlessEqual(pl.get("~#bitrate"), 200)
            s.failUnlessEqual(pl.get("~#year"), 33)
            s.failUnlessEqual(pl.get("~#rating"), 0.3)
            s.failUnlessEqual(pl.get("~#originalyear"), 2002)