class TestSimpleRule(unittest.TestCase): @classmethod def setUpClass(self): Logger.pushLogData("unitTesting", __name__) forceWorkingDirectory() pyswing.globals.potentialRuleMatches = None pyswing.globals.equityCount = None pyswing.database.overrideDatabase("output/TestSimpleRule.db") pyswing.constants.pySwingStartDate = datetime.datetime(2014, 1, 1) deleteFile(pyswing.database.pySwingDatabase) args = "-n %s" % ("unitTesting") createDatabase(args.split()) pretendDate = datetime.datetime(2015, 9, 1) with patch.object(Equity, '_getTodaysDate', return_value=pretendDate) as mock_method: self._equityCBA = Equity("WOR.AX") self._equityCBA.importData() indicatorROC = IndicatorROC(self._equityCBA.dataFrame(), "WOR.AX") indicatorROC.updateIndicator() self.rule = SimpleRule("Indicator_ROC", "ROC_5 > 10") self.rule.evaluateRule("WOR.AX") @classmethod def tearDownClass(self): deleteFile(pyswing.database.pySwingDatabase) def test_IndicatorSMA(self): dataPointMatch = self.rule._ruleData.ix['2015-04-27 00:00:00'] self.assertEqual(dataPointMatch['Match'], 1) dataPointNoMatch = self.rule._ruleData.ix['2015-04-28 00:00:00'] self.assertEqual(dataPointNoMatch['Match'], 0) def test_getEquityCount(self): equityCount = self.rule._getEquityCount() self.assertEqual(equityCount, 1) potentialRuleMatches = self.rule._getPotentialRuleMatches() self.assertEqual(potentialRuleMatches, 434) def test_analyseRule(self): self.rule.analyseRule() self.assertAlmostEqual(self.rule._matchesPerDay, 0.032, 3)