/** * @class illumina::interop::model::metrics::extraction_metric * @test Confirm version 2 of the metric can be written to and read from a stream * @test Confirm version 2 of the metric matches known binary file */ TYPED_TEST(extraction_metrics_test, test_read_write) { EXPECT_EQ(TypeParam::actual_metric_set.version(), TypeParam::VERSION); EXPECT_EQ(TypeParam::actual_metric_set.size(), TypeParam::expected_metric_set.size()); EXPECT_EQ(TypeParam::actual_metric_set.max_cycle(), TypeParam::expected_metric_set.max_cycle()); for(typename TypeParam::const_iterator itExpected=TypeParam::expected_metric_set.begin(), itActual = TypeParam::actual_metric_set.begin(); itExpected != TypeParam::expected_metric_set.end() && itActual != TypeParam::actual_metric_set.end(); itExpected++,itActual++) { EXPECT_EQ(itExpected->lane(), itActual->lane()); EXPECT_EQ(itExpected->tile(), itActual->tile()); EXPECT_EQ(itExpected->cycle(), itActual->cycle()); EXPECT_EQ(itExpected->dateTime(), itActual->dateTime()); std::time_t t = static_cast<std::time_t>(itActual->dateTime()); std::tm* tm = std::localtime(&t); EXPECT_NE(tm, static_cast<std::tm*>(0)); for(size_t i=0;i<extraction_metric::MAX_CHANNELS;i++) { EXPECT_EQ(itExpected->max_intensity(i), itActual->max_intensity(i)); EXPECT_NEAR(itExpected->focusScore(i), itActual->focusScore(i), 1e-7); } } }
/** * @class illumina::interop::model::metrics::corrected_intensity_metric * @test Confirm version 2 of the metric can be written to and read from a stream * @test Confirm version 3 of the metric can be written to and read from a stream * @test Confirm version 2 of the metric matches known binary file * @test Confirm version 3 of the metric matches known binary file */ TYPED_TEST(corrected_intensity_metrics_test, test_read_write) { EXPECT_EQ(TypeParam::actual_metric_set.version(), TypeParam::VERSION); EXPECT_EQ(TypeParam::actual_metrics.size(), TypeParam::expected_metrics.size()); EXPECT_EQ(TypeParam::actual_metric_set.max_cycle(), TypeParam::expected_metric_set.max_cycle()); for(typename TypeParam::const_iterator itExpected=TypeParam::expected_metrics.begin(), itActual = TypeParam::actual_metrics.begin(); itExpected != TypeParam::expected_metrics.end() && itActual != TypeParam::actual_metrics.end(); itExpected++,itActual++) { EXPECT_EQ(itExpected->lane(), itActual->lane()); EXPECT_EQ(itExpected->tile(), itActual->tile()); EXPECT_EQ(itExpected->cycle(), itActual->cycle()); if(TypeParam::VERSION < 3) { EXPECT_EQ(itExpected->averageCycleIntensity(), itActual->averageCycleIntensity()); } if(TypeParam::VERSION == 2) { if (!std::isnan(itExpected->signalToNoise()) || !std::isnan(itActual->signalToNoise())) EXPECT_NEAR(itExpected->signalToNoise(), itActual->signalToNoise(), 1e-7f); } for(ptrdiff_t i=-1;i<constants::NUM_OF_BASES;i++) EXPECT_EQ(itExpected->calledCounts(i), itActual->calledCounts(i)); for(size_t i=0;i<constants::NUM_OF_BASES;i++) { EXPECT_EQ(itExpected->correctedIntCalled(i), itActual->correctedIntCalled(i)); if(TypeParam::VERSION < 3) { EXPECT_EQ(itExpected->correctedIntAll(i), itActual->correctedIntAll(i)); } } } }
/** * @class illumina::interop::model::metrics::error_metric * @test Confirm version 3 of the metric can be written to and read from a stream * @test Confirm version 3 of the metric matches known binary file */ TYPED_TEST(error_metrics_test, test_read_write) { EXPECT_EQ(TypeParam::actual_metric_set.version(), TypeParam::VERSION); EXPECT_EQ(TypeParam::actual_metric_set.size(), TypeParam::expected_metric_set.size()); EXPECT_EQ(TypeParam::actual_metric_set.max_cycle(), TypeParam::expected_metric_set.max_cycle()); for(typename TypeParam::const_iterator itExpected=TypeParam::expected_metric_set.begin(), itActual = TypeParam::actual_metric_set.begin(); itExpected != TypeParam::expected_metric_set.end() && itActual != TypeParam::actual_metric_set.end(); itExpected++,itActual++) { EXPECT_EQ(itExpected->lane(), itActual->lane()); EXPECT_EQ(itExpected->tile(), itActual->tile()); EXPECT_EQ(itExpected->cycle(), itActual->cycle()); EXPECT_EQ(itExpected->mismatch_count(), itActual->mismatch_count()); EXPECT_NEAR(itExpected->errorRate(), itActual->errorRate(), 1e-7f); for(ptrdiff_t i=0;i<static_cast<ptrdiff_t>(itExpected->mismatch_count());i++) EXPECT_EQ(itExpected->mismatch_cluster_count(i), itActual->mismatch_cluster_count(i)); } }