debian-mirror-gitlab/derailed-benchmarks/test/derailed_benchmarks/require_tree_test.rb
2019-10-03 14:02:42 +05:30

95 lines
2.1 KiB
Ruby

# frozen_string_literal: true
require 'test_helper'
class RequireTree < ActiveSupport::TestCase
def tree(name)
DerailedBenchmarks::RequireTree.new(name)
end
def teardown
DerailedBenchmarks::RequireTree.const_set("REQUIRED_BY", {})
end
test "default_cost" do
parent = tree("parent")
assert_equal 0, parent.cost
value = rand(0..100)
parent.cost = value
assert_equal value, parent.cost
end
test "stores child" do
parent = tree("parent")
child = tree("child")
parent << child
# [](name)
assert_equal child, parent["child"]
# children
assert_equal [child], parent.children
assert_equal [child], parent.sorted_children
end
test "sorts children" do
parent = tree("parent")
parent.cost = rand(5..10)
small = tree("small")
small.cost = rand(10..100)
large = tree("large")
large.cost = small.cost + 1
parent << small
parent << large
expected = [large, small]
assert_equal expected, parent.sorted_children
expected = <<-OUT
parent: #{ parent.cost.round(4) } MiB
large: #{ large.cost.round(4) } MiB
small: #{ small.cost.round(4) } MiB
OUT
capture = StringIO.new
parent.print_sorted_children(0, capture)
assert_equal expected, capture.string
end
test "attributes duplicate children" do
parent = tree("parent")
parent.cost = rand(5..10)
small = tree("small")
small.cost = rand(10..100)
large = tree("large")
large.cost = small.cost + 1
dup = tree("large")
dup.cost = 0.4
small << dup
parent << small
parent << large
expected = [large, small]
assert_equal expected, parent.sorted_children
expected = [dup]
assert_equal expected, small.sorted_children
expected = <<-OUT
parent: #{ parent.cost.round(4) } MiB
large: #{ large.cost.round(4) } MiB (Also required by: small)
small: #{ small.cost.round(4) } MiB
large: #{ dup.cost.round(4) } MiB (Also required by: parent)
OUT
capture = StringIO.new
parent.print_sorted_children(0, capture)
assert_equal expected, capture.string
end
end