def test_number_zero_count(self):
     dataset = [1,0,0,1,1,1,0,0,1,0]
     result = DataAnalytics(analysis=Discover.analyse_number(dataset))
     self.assertEqual([50.0], result.get('dominance_weighting'))
     dataset = [1,0,0,2,5,4,0,4,1,0]
     result = Discover.analyse_number(dataset, lower=0, granularity=3)
     self.assertEqual([40.0], result.get('dominance_weighting'))
     self.assertEqual([10], result.get('sample'))
     result = Discover.analyse_number(dataset, lower=1, granularity=3)
     self.assertEqual([40.0], result.get('dominance_weighting'))
     self.assertEqual([6], result.get('sample'))
 def test_analysis_granularity_list(self):
     dataset = [0,1,2,3]
     intervals = [(0,1,'both'),(1,2),(2,3)]
     result = DataAnalytics(Discover.analyse_number(dataset, granularity=intervals))
     control = [50.0, 25.0, 25.0]
     self.assertEqual(control, result.patterns.relative_freq)
     intervals = [(0,1,'both'),(1,2,'both'),(2,3)]
     result = DataAnalytics(Discover.analyse_number(dataset, granularity=intervals))
     control = [50.0, 50.0, 25.0]
     self.assertEqual(control, result.patterns.relative_freq)
     # percentile
     dataset = [0, 0, 2, 2, 1, 2, 3]
     percentile = [.25, .5, .75]
     result = DataAnalytics(Discover.analyse_number(dataset, granularity=percentile))
     control = [28.57, 57.14, 0.0, 14.29]
     self.assertEqual(control, result.patterns.relative_freq)
 def test_analyse_number_lower_upper(self):
     # Default
     dataset = list(range(1,10))
     result = DataAnalytics(Discover.analyse_number(dataset))
     self.assertEqual(1, result.stats.lowest)
     self.assertEqual(9, result.stats.highest)
     # Outer Boundaries
     result = DataAnalytics(Discover.analyse_number(dataset, lower=0, upper=10))
     self.assertEqual(0, result.params.lower)
     self.assertEqual(10, result.params.upper)
     self.assertEqual(0, result.stats.lowest)
     self.assertEqual(10, result.stats.highest)
     # Inner Boundaries
     result = DataAnalytics(Discover.analyse_number(dataset, lower=2, upper=8))
     self.assertEqual(2, result.params.lower)
     self.assertEqual(8, result.params.upper)
     self.assertEqual(2, result.stats.lowest)
     self.assertEqual(8, result.stats.highest)
    def test_analyse_number(self):
        dataset = []
        result = Discover.analyse_number(dataset)
        control = [1]
        self.assertEqual(control, result.get('patterns').get('relative_freq'))
        self.assertEqual((0,0,3), (result.get('intent').get('lowest'), result.get('intent').get('highest'), result.get('intent').get('granularity')))
        self.assertEqual(0, result.get('stats').get('sample_size'))
        dataset = [1,2,3,4,5,6,7,8,9,10]
        result = Discover.analyse_number(dataset, granularity=2)
        control = [50.0, 50.0]
        self.assertEqual(control, result.get('patterns').get('relative_freq'))
        self.assertEqual((1,10), (result.get('intent').get('lowest'), result.get('intent').get('highest')))
        control = [(1.0, 5.5, 'both'), (5.5, 10.0, 'right')]
        self.assertEqual(control, result.get('intent').get('intervals'))
        self.assertEqual(2, result.get('intent').get('granularity'))

        result = Discover.analyse_number(dataset, granularity=3.0)
        control = [30.0, 30.0, 40.0]
        self.assertEqual(control, result.get('patterns').get('relative_freq'))
        self.assertEqual((1,10), (result.get('intent').get('lowest'), result.get('intent').get('highest')))
        control = [(1.0, 4.0, 'left'), (4.0, 7.0, 'left'), (7.0, 10.0, 'both')]
        self.assertEqual(control, result.get('intent').get('intervals'))
        self.assertEqual(3.0, result.get('intent').get('granularity'))

        result = Discover.analyse_number(dataset, granularity=2.0)
        control = [20.0, 20.0, 20.0, 20.0, 20.0]
        self.assertEqual(control, result.get('patterns').get('relative_freq'))
        self.assertEqual((1,10), (result.get('intent').get('lowest'), result.get('intent').get('highest')))
        control = [(1.0, 3.0, 'left'), (3.0, 5.0, 'left'), (5.0, 7.0, 'left'), (7.0, 9.0, 'left'), (9.0, 11.0, 'both')]
        self.assertEqual(control, result.get('intent').get('intervals'))
        self.assertEqual(2.0, result.get('intent').get('granularity'))

        result = Discover.analyse_number(dataset, granularity=1.0, lower=0, upper=5)
        control = [0.0, 20.0, 20.0, 20.0, 20.0, 20.0]
        self.assertEqual(control, result.get('patterns').get('relative_freq'))
        self.assertEqual((0,5), (result.get('intent').get('lowest'), result.get('intent').get('highest')))
        control = [(0.0, 1.0, 'left'), (1.0, 2.0, 'left'), (2.0, 3.0, 'left'), (3.0, 4.0, 'left'), (4.0, 5.0, 'left'), (5.0, 6.0, 'both')]
        self.assertEqual(control, result.get('intent').get('intervals'))
        self.assertEqual(1.0, result.get('intent').get('granularity'))
        pprint(result)