require "minitest" require "rank_king" class TestRankKing < Minitest::Test def setup @pool = Pool.create(name: "pool") @axis = Axis.create(pool: @pool, name: "axis") @items = (?a..?d).map { Item.create(pool: @pool, title: _1) } end def test_rank_king ratings = @pool.items.map {|item| Rating.first(axis: @axis, item:) || OS.rating } original_sigma_sq = Math.sqrt(ratings.sum { _1.sigma ** 2 }) game = RankKing.suggest_game(@axis) winner, loser = game.shuffle RankKing.rank(@axis, winner:, loser:) sigma_sq = Math.sqrt(@axis.ratings.sum { _1.sigma ** 2 }) assert original_sigma_sq > sigma_sq end end