void Sz4BufferTestCase::searchTest() { std::wstringstream base_dir_name; base_dir_name << L"/tmp/szb_bufer_unit_test_2" << getpid() << L"." << time(NULL) << L".tmp"; std::wstringstream param_dir_name; param_dir_name << base_dir_name.str() << L"/A/A/A"; boost::filesystem::create_directories(param_dir_name.str()); for (int i = 0; i < 2100; i += 100) { std::wstringstream ss; ss << param_dir_name.str() << L"/" << std::setfill(L'0') << std::setw(10) << i << L".sz4"; std::ofstream ofs(SC::S2A(ss.str()).c_str(), std::ios_base::binary); int j; for (j = 0; j < 100 - (2000 - i) / 100 - 10; j++) { unsigned data = j % 25; ofs.write((const char*) &data, sizeof(data)); unsigned char delta = 1; ofs.write((const char*) &delta, sizeof(delta)); } unsigned data = i / 100 + 10000; ofs.write((const char*) &data, sizeof(data)); unsigned char delta = 1; ofs.write((const char*) &delta, sizeof(delta)); } TParam param(NULL); param.SetName(L"A:A:A"); param.SetTimeType(TParam::SECOND); param.SetDataType(TParam::INT); SzbParamMonitor monitor(L""); mocks::IPKContainerMock container_mock; container_mock.add_param(¶m); sz4::buffer_templ<sz4::base_templ<mocks::mock_types>> buffer(&m_base, &monitor, &container_mock, L"TEST", base_dir_name.str()); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(0), buffer.search_data_right(¶m, sz4::second_time_t(0), sz4::second_time_t(2000), PT_SEC10, test_search_condition(0))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(100), buffer.search_data_right(¶m, sz4::second_time_t(100), sz4::second_time_t(2000), PT_SEC10, test_search_condition(0))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(125), buffer.search_data_right(¶m, sz4::second_time_t(101), sz4::second_time_t(2000), PT_SEC10, test_search_condition(0))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(1), buffer.search_data_right(¶m, sz4::second_time_t(0), sz4::second_time_t(2000), PT_SEC10, test_search_condition(1))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(101), buffer.search_data_right(¶m, sz4::second_time_t(100), sz4::second_time_t(2000), PT_SEC10, test_search_condition(1))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(224), buffer.search_data_right(¶m, sz4::second_time_t(190), sz4::second_time_t(2000), PT_SEC10, test_search_condition(24))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(224), buffer.search_data_right(¶m, sz4::second_time_t(190), sz4::second_time_t(2000), PT_SEC10, test_search_condition(24))); CPPUNIT_ASSERT_EQUAL(sz4::time_trait<sz4::second_time_t>::invalid_value, buffer.search_data_right(¶m, sz4::second_time_t(10000), sz4::second_time_t(20000), PT_SEC10, test_search_condition(181))); CPPUNIT_ASSERT_EQUAL(sz4::time_trait<sz4::second_time_t>::invalid_value, buffer.search_data_right(¶m, sz4::second_time_t(1885), sz4::second_time_t(1900), PT_SEC10, test_search_condition(0))); for (int i = 0; i < 20; i++) { CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(100 * i + 70 + i), buffer.search_data_right(¶m, sz4::second_time_t(0), sz4::second_time_t(2000), PT_SEC10, test_search_condition(10000 + i))); } CPPUNIT_ASSERT_EQUAL(sz4::time_trait<sz4::second_time_t>::invalid_value, buffer.search_data_right(¶m, sz4::second_time_t(182), sz4::second_time_t(2000), PT_SEC10, test_search_condition(181))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(2000), buffer.search_data_left(¶m, sz4::second_time_t(2000), sz4::second_time_t(0), PT_SEC10, test_search_condition(0))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(150), buffer.search_data_left(¶m, sz4::second_time_t(198), sz4::second_time_t(100), PT_SEC10, test_search_condition(0))); CPPUNIT_ASSERT_EQUAL(sz4::time_trait<sz4::second_time_t>::invalid_value, buffer.search_data_left(¶m, sz4::second_time_t(1999), sz4::second_time_t(1998), PT_SEC10, test_search_condition(0))); for (int i = 0; i < 20; i++) { CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(100 * i + 70 + i), buffer.search_data_left(¶m, sz4::second_time_t(2000), sz4::second_time_t(0), PT_SEC10, test_search_condition(10000 + i))); } boost::filesystem::remove_all(boost::filesystem::wpath(base_dir_name.str())); }
void Sz4BlockTestCase::searchDataTest() { typedef sz4::value_time_pair<int, sz4::second_time_t> pair_type; sz4::concrete_block<int, sz4::second_time_t> block(0u, &m_cache); std::vector<pair_type> v = m_v; v.push_back(sz4::make_value_time_pair<pair_type>(3, 11u)); block.set_data(v); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(0), block.search_data_right(0u, 10u, test_search_condition(1))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(0), block.search_data_right(0u, 1u, test_search_condition(1))); CPPUNIT_ASSERT_EQUAL(sz4::time_trait<sz4::second_time_t>::invalid_value, block.search_data_right(1u, 10u, test_search_condition(1))); CPPUNIT_ASSERT_EQUAL(sz4::time_trait<sz4::second_time_t>::invalid_value, block.search_data_right(2u, 10u, test_search_condition(1))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(1), block.search_data_right(0u, 10u, test_search_condition(3))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(2), block.search_data_right(2u, 10u, test_search_condition(3))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(9), block.search_data_right(3u, 10u, test_search_condition(3))); CPPUNIT_ASSERT_EQUAL(sz4::time_trait<sz4::second_time_t>::invalid_value, block.search_data_right(3u, 9u, test_search_condition(3))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(9), block.search_data_right(9u, 11u, test_search_condition(3))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(10), block.search_data_right(10u, 11u, test_search_condition(3))); CPPUNIT_ASSERT_EQUAL(sz4::time_trait<sz4::second_time_t>::invalid_value, block.search_data_right(10u, 11u, test_search_condition(5))); CPPUNIT_ASSERT_EQUAL(sz4::time_trait<sz4::second_time_t>::invalid_value, block.search_data_right(11u, 12u, test_search_condition(3))); CPPUNIT_ASSERT_EQUAL(sz4::time_trait<sz4::second_time_t>::invalid_value, block.search_data_right(2u, 11u, test_search_condition(1))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(7), block.search_data_right(0u, 10u, test_search_condition(9))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(7), block.search_data_right(4u, 10u, test_search_condition(9))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(0), block.search_data_left(10u, 0u, test_search_condition(1))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(0), block.search_data_left(1u, 0u, test_search_condition(1))); CPPUNIT_ASSERT_EQUAL(sz4::time_trait<sz4::second_time_t>::invalid_value, block.search_data_left(10u, 1u, test_search_condition(1))); CPPUNIT_ASSERT_EQUAL(sz4::time_trait<sz4::second_time_t>::invalid_value, block.search_data_left(100u, 11u, test_search_condition(3))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(4), block.search_data_left(100u, 0, test_search_condition(5))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(10), block.search_data_left(10u, 0, test_search_condition(3))); CPPUNIT_ASSERT_EQUAL(sz4::time_trait<sz4::second_time_t>::invalid_value, block.search_data_left(8u, 3u, test_search_condition(3))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(10), block.search_data_left(11u, 10u, test_search_condition(3))); CPPUNIT_ASSERT_EQUAL(sz4::time_trait<sz4::second_time_t>::invalid_value, block.search_data_left(11u, 10u, test_search_condition(5))); CPPUNIT_ASSERT_EQUAL(sz4::second_time_t(2), block.search_data_left(8, 0u, test_search_condition(3))); }