[yul-phaser] Add --relative-metric-scale option

This commit is contained in:
Kamil Śliwak
2020-03-18 16:28:16 +01:00
parent 8e64c5c6f0
commit 01050940fd
3 changed files with 28 additions and 1 deletions
+13
View File
@@ -62,6 +62,7 @@ protected:
Program m_program = get<Program>(Program::load(m_sourceStream));
FitnessMetricFactory::Options m_options = {
/* metric = */ MetricChoice::CodeSize,
/* relativeMetricScale = */ 5,
/* chromosomeRepetitions = */ 1,
};
};
@@ -163,6 +164,18 @@ BOOST_FIXTURE_TEST_CASE(build_should_respect_chromosome_repetitions_option, Fitn
BOOST_TEST(programSizeMetric->repetitionCount() == m_options.chromosomeRepetitions);
}
BOOST_FIXTURE_TEST_CASE(build_should_set_relative_metric_scale, FitnessMetricFactoryFixture)
{
m_options.metric = MetricChoice::RelativeCodeSize;
m_options.relativeMetricScale = 10;
unique_ptr<FitnessMetric> metric = FitnessMetricFactory::build(m_options, m_program);
BOOST_REQUIRE(metric != nullptr);
auto relativeProgramSizeMetric = dynamic_cast<RelativeProgramSize*>(metric.get());
BOOST_REQUIRE(relativeProgramSizeMetric != nullptr);
BOOST_TEST(relativeProgramSizeMetric->fixedPointPrecision() == m_options.relativeMetricScale);
}
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE(PopulationFactoryTest)