def test_mad(self):
     """Test gesd on almost flat data."""
     number_outliers, suspicious_indexes, test_statistics, critical_values, all_z_scores = gesd(
         self.series, mad=True)
     assert 0 == number_outliers
     assert [] == suspicious_indexes
     assert [] == test_statistics
     assert [] == critical_values
     assert [] == all_z_scores
 def test_flat(self):
     """Test gesd on flat data."""
     number_outliers, suspicious_indexes, test_statistics, critical_values, all_z_scores = gesd(
         [1] * 20)
     assert 0 == number_outliers
     assert [] == suspicious_indexes
     assert [] == test_statistics
     assert [] == critical_values
     assert [] == all_z_scores
 def test_standard(self):
     """Test gesd on almost flat data."""
     number_outliers, suspicious_indexes, _, _, _ = gesd(self.series)
     assert 1 == number_outliers
     assert [203] == suspicious_indexes
    def test_mad(self):
        """ Test MAD z score. """
        number_outliers, suspicious_indexes, test_statistics, critical_values, all_z_scores = gesd(
            self.ROSNER, mad=True)

        assert 4 == number_outliers
        assert np.array_equal(suspicious_indexes[:number_outliers],
                              self.CANONICAL_INDEXES[:number_outliers])
 def test_significance_level_gt_one(self):
     """Test invalid significance_level."""
     with pytest.raises(ValueError, match=r"invalid significance_level"):
         gesd([1] * 20, significance_level=1)
 def test_insufficient_data(self):
     """Test insufficient data."""
     with pytest.raises(ValueError, match=r"max_outliers.* <= length"):
         gesd([1])
     with pytest.raises(ValueError, match=r"max_outliers.* <= length"):
         gesd([1] * 10)
    def test_canonical(self):
        """Test gesd implementation."""
        number_outliers, suspicious_indexes, test_statistics, critical_values, all_z_scores = gesd(
            self.ROSNER)

        assert 3 == number_outliers
        assert np.array_equal(suspicious_indexes, self.CANONICAL_INDEXES)

        assert all(
            np.isclose(self.CANONICAL_STATS,
                       np.fabs(test_statistics),
                       rtol=0.001))
        assert all(
            np.isclose(self.CANONICAL_CRITICAL, critical_values, rtol=0.001))
 def test_max_outliers(self):
     """Test insufficient data."""
     with pytest.raises(ValueError, match=r"max_outliers.* must be >= 1"):
         gesd([1], 0)
     with pytest.raises(ValueError, match=r"max_outliers.* must be >= 1"):
         gesd([1], -1)
 def test_triple_max_10(self):
     """Test gesd on flat data."""
     number_outliers, suspicious_indexes, test_statistics, critical_values, all_z_scores = gesd(
         TRIPLE, mad=True)
     assert 3 == number_outliers
     assert [7, 20, 30] == suspicious_indexes[:3]
 def test_single_max_10(self):
     """Test gesd on flat data."""
     number_outliers, suspicious_indexes, test_statistics, critical_values, all_z_scores = gesd(
         SINGLE, mad=True)
     assert 10 == number_outliers
     assert 7 == suspicious_indexes[0]
 def test_double_max_10(self):
     """Test gesd on flat data."""
     number_outliers, suspicious_indexes, test_statistics, critical_values, all_z_scores = gesd(
         DOUBLE, max_outliers=2, mad=True)
     assert 2 == number_outliers
     assert [7, 20] == suspicious_indexes
 def test_double_max_10(self):
     """Test gesd on flat data."""
     number_outliers, suspicious_indexes, test_statistics, critical_values, all_z_scores = gesd(
         DOUBLE)
     assert 2 == number_outliers
     assert 7 == suspicious_indexes[0]
     assert 20 == suspicious_indexes[1]
 def test_no_data(self):
     """Test no data."""
     with pytest.raises(ValueError, match=r"No Data"):
         gesd(None)
     with pytest.raises(ValueError, match=r"No Data"):
         gesd([])
 def test_single(self):
     """Test gesd on flat data."""
     number_outliers, suspicious_indexes, test_statistics, critical_values, all_z_scores = gesd(
         SINGLE, max_outliers=1)
     assert 1 == number_outliers
     assert [7] == suspicious_indexes
 def test_mad(self, mad_series):
     """Test gesd on real data with Median Absolute Deviation."""
     number_outliers, suspicious_indexes, _, _, _ = gesd(mad_series,
                                                         mad=True)
     assert 2 == number_outliers
     assert [90, 4, 27, 37, 64, 78, 74, 88, 47, 60] == suspicious_indexes
 def test_standard(self, real_series):
     """Test gesd on real data with standard."""
     number_outliers, suspicious_indexes, _, _, _ = gesd(real_series)
     assert 2 == number_outliers
     assert [90, 4, 27, 88, 37, 64, 126, 78, 74, 47] == suspicious_indexes