// -------------------------------------------------------------------------- // // void Test_ScalarDistributionData::testInitNotifyAccept() { // Read a library. Library library("./testfiles/testlibSmall"); // Construct with the normal constructor. const std::string scalar_name("VP-Volume"); const std::string ref_path("./testfiles/vvol_ref.data"); const double sigma = 0.093; const int pos = 1; ScalarDistributionData sdd(scalar_name, ref_path, sigma, pos); // Setup a small sampleset. std::vector<int> sampleset(10); sampleset[0] = 7; sampleset[1] = 9; sampleset[2] = 13; sampleset[3] = 27; sampleset[4] = 28; sampleset[5] = 29; sampleset[6] = 43; sampleset[7] = 53; sampleset[8] = 56; sampleset[9] = 57; // Call init. sdd.init(sampleset, library); // Check that the data was correctly set. CPPUNIT_ASSERT_EQUAL( 10, sdd.nsample_ ); const double chi2 = 16.79464613935; CPPUNIT_ASSERT_DOUBLES_EQUAL( chi2, sdd.chi2_, 1.0e-10 ); // Check a few values. CPPUNIT_ASSERT_DOUBLES_EQUAL( sdd.distribution_[1] , 0.1, 1.0e-12 ); CPPUNIT_ASSERT_DOUBLES_EQUAL( sdd.distribution_[26], 0.2, 1.0e-12 ); CPPUNIT_ASSERT_DOUBLES_EQUAL( sdd.distribution_[86], 0.1, 1.0e-12 ); // Call notify. const int from_sample = 29; const int from_basis = 34; sdd.notify(from_sample, from_basis, library); // Check chi2 and chi2_new. const double chi2_new = 16.7499785124567; CPPUNIT_ASSERT_DOUBLES_EQUAL( chi2_new, sdd.chi2_new_, 1.0e-8 ); CPPUNIT_ASSERT_DOUBLES_EQUAL( chi2, sdd.chi2_, 1.0e-8 ); // Call accept. sdd.accept(); // Check that chi2 was set. CPPUNIT_ASSERT_DOUBLES_EQUAL( chi2_new, sdd.chi2_, 1.0e-10 ); // Check that the curve was set. for (size_t i = 0; i < sdd.distribution_.size(); ++i) { CPPUNIT_ASSERT_DOUBLES_EQUAL( sdd.distribution_[i], sdd.distribution_new_[i], 1.0e-12 ); } }
// -------------------------------------------------------------------------- // // void Test_ScalarDistributionData::testConstructionFail2() { // Fail with empty file. const std::string scalar_name("VP-Area"); const std::string ref_path("./testfiles/EMPTY_FILE"); const double sigma = 0.093; const int pos = 2; CPPUNIT_ASSERT_THROW( ScalarDistributionData sdd(scalar_name, ref_path, sigma, pos), IOException ); }
void SplitTransactionDialog::EditEntry(int index) { if (index < 0 || index >= (int)this->m_local_splits.size()) return; SplitDetailDialog sdd(this, m_local_splits[index], transType_, accountID_); if (sdd.ShowModal() == wxID_OK) { m_local_splits[index] = sdd.getResult(); items_changed_ = true; DataToControls(); UpdateSplitTotal(); } }
void SplitTransactionDialog::OnButtonAddClick( wxCommandEvent& /*event*/ ) { double amount = totalAmount_ - Model_Splittransaction::get_total(m_local_splits); if (amount < 0.0) amount = 0.0; Split split = { -1, -1, amount }; SplitDetailDialog sdd(this, split, transType_, accountID_); if (sdd.ShowModal() == wxID_OK) { this->m_local_splits.push_back(sdd.getResult()); items_changed_ = true; } DataToControls(); }
// -------------------------------------------------------------------------- // // void Test_ScalarDistributionData::testConstruction() { // Make sure we can default construct without crashing. CPPUNIT_ASSERT_NO_THROW( ScalarDistributionData sdd ); // Construct with the normal constructor. const std::string scalar_name("VP-Volume"); const std::string ref_path("./testfiles/vvol_ref.data"); const double sigma = 0.093; const int pos = 2; ScalarDistributionData sdd(scalar_name, ref_path, sigma, pos); // Check the member data. const double eps = 1.0e-12; CPPUNIT_ASSERT_EQUAL( sdd.name_, scalar_name ); CPPUNIT_ASSERT_EQUAL( sdd.pos_, pos ); CPPUNIT_ASSERT_EQUAL( sdd.nbins_, 125 ); CPPUNIT_ASSERT_DOUBLES_EQUAL( sdd.sigma_, sigma, eps ); CPPUNIT_ASSERT_DOUBLES_EQUAL( sdd.one_over_sigma2_, 1.0/(sigma*sigma), eps ); CPPUNIT_ASSERT_DOUBLES_EQUAL( sdd.lowest_, 25.45, eps ); CPPUNIT_ASSERT_DOUBLES_EQUAL( sdd.highest_, 37.85, eps ); CPPUNIT_ASSERT_DOUBLES_EQUAL( sdd.one_over_binsize_, 10.0, eps ); // Check dimensions. CPPUNIT_ASSERT_EQUAL( static_cast<int>(sdd.target_.size()), sdd.nbins_ ); CPPUNIT_ASSERT_EQUAL( static_cast<int>(sdd.scale_.size()), sdd.nbins_ ); CPPUNIT_ASSERT_EQUAL( static_cast<int>(sdd.factor_.size()), sdd.nbins_ ); CPPUNIT_ASSERT_EQUAL( static_cast<int>(sdd.distribution_.size()), sdd.nbins_ ); CPPUNIT_ASSERT_EQUAL( static_cast<int>(sdd.distribution_new_.size()), sdd.nbins_ ); // Check hardcoded reference values. CPPUNIT_ASSERT_DOUBLES_EQUAL( sdd.target_[0], 0.00887034393507342, eps ); CPPUNIT_ASSERT_DOUBLES_EQUAL( sdd.target_[8], 0.00151451299040374, eps ); CPPUNIT_ASSERT_DOUBLES_EQUAL( sdd.target_[19], 0.00237382469428914, eps ); CPPUNIT_ASSERT_DOUBLES_EQUAL( sdd.target_[99], 0.00178721705381046, eps ); // CPPUNIT_ASSERT_DOUBLES_EQUAL( sdd.scale_[0], 25.5, eps ); CPPUNIT_ASSERT_DOUBLES_EQUAL( sdd.scale_[8], 26.3, eps ); CPPUNIT_ASSERT_DOUBLES_EQUAL( sdd.scale_[19], 27.4, eps ); CPPUNIT_ASSERT_DOUBLES_EQUAL( sdd.scale_[99], 35.4, eps ); // Check the target norm. CPPUNIT_ASSERT_DOUBLES_EQUAL( vsum(sdd.target_), 1.0, eps ); // Test the edges of the binning routine in a realistic case. CPPUNIT_ASSERT_EQUAL(sdd.get_bin(25.0), 0); CPPUNIT_ASSERT_EQUAL(sdd.get_bin(31.83), 63); CPPUNIT_ASSERT_EQUAL(sdd.get_bin(37.87),124); }