From 492ddb9c75ea1f02a8a536bc7d18a10472c3ebc6 Mon Sep 17 00:00:00 2001 From: Martyn Gigg <martyn.gigg@stfc.ac.uk> Date: Thu, 3 May 2012 11:14:03 +0100 Subject: [PATCH] Add a test to LogFilterTest Refs #5203 Needs debugging by Wendou for it to be turned on. --- .../Framework/Kernel/test/LogFilterTest.h | 80 +++++++++++++++++-- .../kernel/src/Exports/TimeSeriesProperty.cpp | 43 +++++++--- 2 files changed, 103 insertions(+), 20 deletions(-) diff --git a/Code/Mantid/Framework/Kernel/test/LogFilterTest.h b/Code/Mantid/Framework/Kernel/test/LogFilterTest.h index 49dc91276eb..e7afddc6e8d 100644 --- a/Code/Mantid/Framework/Kernel/test/LogFilterTest.h +++ b/Code/Mantid/Framework/Kernel/test/LogFilterTest.h @@ -70,34 +70,27 @@ public: flt.addFilter(&f); TS_ASSERT_EQUALS( flt.data()->size(), 6 ); - std::cout << "flt.data() size = " << flt.data()->size() << std::endl; - std::cout << "0" << std::endl; TS_ASSERT_EQUALS( flt.data()->nthInterval(0).begin_str(), "2007-Nov-30 16:16:50" ); TS_ASSERT_EQUALS( flt.data()->nthInterval(0).end_str(), "2007-Nov-30 16:17:00" ); TS_ASSERT_EQUALS( flt.data()->nthValue(0), 1 ); - std::cout << "1" << std::endl; TS_ASSERT_EQUALS( flt.data()->nthInterval(1).begin_str(), "2007-Nov-30 16:17:00" ); TS_ASSERT_EQUALS( flt.data()->nthInterval(1).end_str(), "2007-Nov-30 16:17:10" ); TS_ASSERT_EQUALS( flt.data()->nthValue(1), 1 ); - std::cout << "2" << std::endl; TS_ASSERT_EQUALS( flt.data()->nthInterval(2).begin_str(), "2007-Nov-30 16:17:10" ); TS_ASSERT_EQUALS( flt.data()->nthInterval(2).end_str(), "2007-Nov-30 16:17:20" ); TS_ASSERT_EQUALS( flt.data()->nthValue(2), 2 ); - std::cout << "3" << std::endl; TS_ASSERT_EQUALS( flt.data()->nthInterval(3).begin_str(), "2007-Nov-30 16:17:20" ); TS_ASSERT_EQUALS( flt.data()->nthInterval(3).end_str(), "2007-Nov-30 16:17:25" ); TS_ASSERT_EQUALS( flt.data()->nthValue(3), 3 ); - std::cout << "4" << std::endl; TS_ASSERT_EQUALS( flt.data()->nthInterval(4).begin_str(), "2007-Nov-30 16:17:39" ); TS_ASSERT_EQUALS( flt.data()->nthInterval(4).end_str(), "2007-Nov-30 16:17:40" ); TS_ASSERT_EQUALS( flt.data()->nthValue(4), 4 ); - std::cout << "5" << std::endl; TS_ASSERT_EQUALS( flt.data()->nthInterval(5).begin_str(), "2007-Nov-30 16:17:40" ); TS_ASSERT_EQUALS( flt.data()->nthInterval(5).end_str(), "2007-Nov-30 16:17:41" ); TS_ASSERT_EQUALS( flt.data()->nthValue(5), 5 ); @@ -189,6 +182,79 @@ public: return; } + void xtestFilterByPeriod() // Test for Wendou to look at + { + TimeSeriesProperty<double> height_log("height_log"); + height_log.addValue("2008-Jun-17 11:10:44", -0.86526); + height_log.addValue("2008-Jun-17 11:10:45", -1.17843); + height_log.addValue("2008-Jun-17 11:10:47", -1.27995); + height_log.addValue("2008-Jun-17 11:20:15", -1.38216); + height_log.addValue("2008-Jun-17 11:20:16", -1.87435); + height_log.addValue("2008-Jun-17 11:20:17", -2.70547); + height_log.addValue("2008-Jun-17 11:20:19", -2.99125); + height_log.addValue("2008-Jun-17 11:20:20", -3); + height_log.addValue("2008-Jun-17 11:20:27", -2.98519); + height_log.addValue("2008-Jun-17 11:20:29", -2.68904); + height_log.addValue("2008-Jun-17 11:20:30", -2.5); + height_log.addValue("2008-Jun-17 11:20:38", -2.45909); + height_log.addValue("2008-Jun-17 11:20:39", -2.08764); + height_log.addValue("2008-Jun-17 11:20:40", -2); + height_log.addValue("2008-Jun-17 11:20:50", -1.85174); + height_log.addValue("2008-Jun-17 11:20:51", -1.51258); + height_log.addValue("2008-Jun-17 11:20:52", -1.5); + height_log.addValue("2008-Jun-17 11:21:01", -1.48566); + height_log.addValue("2008-Jun-17 11:21:02", -1.18799); + height_log.addValue("2008-Jun-17 11:21:04", -1); + height_log.addValue("2008-Jun-17 11:21:11", -0.98799); + height_log.addValue("2008-Jun-17 11:21:13", -0.63694); + height_log.addValue("2008-Jun-17 11:21:14", -0.5); + height_log.addValue("2008-Jun-17 11:21:23", -0.46247); + height_log.addValue("2008-Jun-17 11:21:24", -0.08519); + height_log.addValue("2008-Jun-17 11:21:25", 0); + + TimeSeriesProperty<bool> period_log("period 7"); + period_log.addValue("2008-Jun-17 11:11:13", false); + period_log.addValue("2008-Jun-17 11:11:13", false); + period_log.addValue("2008-Jun-17 11:11:18", false); + period_log.addValue("2008-Jun-17 11:11:30", false); + period_log.addValue("2008-Jun-17 11:11:42", false); + period_log.addValue("2008-Jun-17 11:11:52", false); + period_log.addValue("2008-Jun-17 11:12:01", false); + period_log.addValue("2008-Jun-17 11:12:11", false); + period_log.addValue("2008-Jun-17 11:12:21", true); + period_log.addValue("2008-Jun-17 11:12:32", false); + period_log.addValue("2008-Jun-17 11:12:42", false); + period_log.addValue("2008-Jun-17 11:12:52", false); + period_log.addValue("2008-Jun-17 11:13:02", false); + period_log.addValue("2008-Jun-17 11:16:55", false); + period_log.addValue("2008-Jun-17 11:17:00", false); + period_log.addValue("2008-Jun-17 11:17:16", false); + period_log.addValue("2008-Jun-17 11:17:28", false); + period_log.addValue("2008-Jun-17 11:17:37", false); + period_log.addValue("2008-Jun-17 11:17:48", false); + period_log.addValue("2008-Jun-17 11:17:57", false); + period_log.addValue("2008-Jun-17 11:18:07", true); + period_log.addValue("2008-Jun-17 11:18:18", false); + period_log.addValue("2008-Jun-17 11:18:28", false); + period_log.addValue("2008-Jun-17 11:18:38", false); + period_log.addValue("2008-Jun-17 11:18:48", false); + period_log.addValue("2008-Jun-17 11:20:07", false); + period_log.addValue("2008-Jun-17 11:20:11", false); + period_log.addValue("2008-Jun-17 11:20:24", false); + period_log.addValue("2008-Jun-17 11:20:34", false); + period_log.addValue("2008-Jun-17 11:20:46", false); + period_log.addValue("2008-Jun-17 11:20:58", false); + period_log.addValue("2008-Jun-17 11:21:08", false); + period_log.addValue("2008-Jun-17 11:21:19", true); + + TS_ASSERT_EQUALS(height_log.size(), 26); + + LogFilter filter(&height_log); + filter.addFilter(&period_log); // This throws when it shouldn't + //const TimeSeriesProperty<double> *filteredLog = filter.data(); + //TS_ASSERT_EQUALS(filteredLog->size(), 5) + } + private: std::time_t createTime_t_FromString(const std::string &str) { diff --git a/Code/Mantid/Framework/PythonInterface/mantid/kernel/src/Exports/TimeSeriesProperty.cpp b/Code/Mantid/Framework/PythonInterface/mantid/kernel/src/Exports/TimeSeriesProperty.cpp index 10d7219bead..f997042dca8 100644 --- a/Code/Mantid/Framework/PythonInterface/mantid/kernel/src/Exports/TimeSeriesProperty.cpp +++ b/Code/Mantid/Framework/PythonInterface/mantid/kernel/src/Exports/TimeSeriesProperty.cpp @@ -7,26 +7,43 @@ using Mantid::Kernel::TimeSeriesProperty; using Mantid::Kernel::Property; using namespace boost::python; -void export_TimeSeriesProperty_Double() +namespace { - register_ptr_to_python<TimeSeriesProperty<double>*>(); - register_ptr_to_python<const TimeSeriesProperty<double>*>(); - implicitly_convertible<TimeSeriesProperty<double>*,const TimeSeriesProperty<double>*>(); + /// Defines the getStatistics member for various types + #define DEF_GET_STATS(TYPE) DEF_GET_STATS_##TYPE + /// Doubles have a get stats member + #define DEF_GET_STATS_double .def("getStatistics", &TimeSeriesProperty<double>::getStatistics) + /// booleans do not have a get stats member + #define DEF_GET_STATS_bool - class_<TimeSeriesProperty<double>, bases<Property>, boost::noncopyable>("FloatTimeSeriesProperty", no_init) - .def("getStatistics", &Mantid::Kernel::TimeSeriesProperty<double>::getStatistics) - .add_property("value", &Mantid::Kernel::TimeSeriesProperty<double>::valuesAsVector) - .add_property("times", &Mantid::Kernel::TimeSeriesProperty<double>::timesAsVector) + /// Macro to reduce copy-and-paste + #define EXPORT_TIMESERIES_PROP(TYPE, Prefix)\ + register_ptr_to_python<TimeSeriesProperty<TYPE>*>();\ + register_ptr_to_python<const TimeSeriesProperty<TYPE>*>();\ + implicitly_convertible<TimeSeriesProperty<TYPE>*,const TimeSeriesProperty<TYPE>*>();\ + \ + class_<TimeSeriesProperty<TYPE>, bases<Property>, boost::noncopyable>(#Prefix"TimeSeriesProperty", no_init)\ + .add_property("value", &Mantid::Kernel::TimeSeriesProperty<TYPE>::valuesAsVector) \ + .add_property("times", &Mantid::Kernel::TimeSeriesProperty<TYPE>::timesAsVector) \ + .def("valueAsString", &TimeSeriesProperty<TYPE>::value) \ + .def("size", &TimeSeriesProperty<TYPE>::size)\ + .def("firstTime", &TimeSeriesProperty<TYPE>::firstTime) \ + .def("firstValue", &TimeSeriesProperty<TYPE>::firstValue) \ + .def("lastTime", &TimeSeriesProperty<TYPE>::lastTime) \ + .def("lastValue", &TimeSeriesProperty<TYPE>::lastValue) \ + DEF_GET_STATS(TYPE) \ + ; ; } -void export_TimeSeriesProperty_Bool() +void export_TimeSeriesProperty_Double() { - register_ptr_to_python<TimeSeriesProperty<bool>*>(); - register_ptr_to_python<const TimeSeriesProperty<bool>*>(); - implicitly_convertible<TimeSeriesProperty<bool>*,const TimeSeriesProperty<bool>*>(); + EXPORT_TIMESERIES_PROP(double, Float); +} - class_<TimeSeriesProperty<bool>, bases<Property>, boost::noncopyable>("BoolTimeSeriesProperty", no_init); +void export_TimeSeriesProperty_Bool() +{ + EXPORT_TIMESERIES_PROP(bool, Bool); } void export_TimeSeriesPropertyStatistics() -- GitLab