1- import unittest
2-
31import numpy as np
42import pandas
5- import sklearn
63import pytest
4+ import sklearn
5+
76from .. import adbscan
87
98
10- class ADBSCAN_Tester ( unittest . TestCase ) :
11- def setUp (self ):
9+ class TestADBSCAN :
10+ def setup_method (self ):
1211 np .random .seed (10 )
1312 self .db = pandas .DataFrame (
1413 {"x" : np .random .random (25 ), "y" : np .random .random (25 )}
@@ -82,14 +81,14 @@ def test_adbscan(self):
8281 ads = adbscan .ADBSCAN (0.03 , 3 , reps = 10 , keep_solus = True )
8382 _ = ads .fit (self .db , xy = ["x" , "y" ])
8483 # Params
85- self . assertAlmostEqual (ads .eps , 0.03 )
86- self . assertEqual ( ads .min_samples , 3 )
87- self . assertEqual ( ads .algorithm , "auto" )
88- self . assertEqual ( ads .n_jobs , 1 )
89- self . assertEqual ( ads .pct_exact , 0.1 )
90- self . assertEqual ( ads .reps , 10 )
91- self . assertEqual ( ads .keep_solus , True )
92- self . assertEqual ( ads .pct_thr , 0.9 )
84+ assert pytest . approx (ads .eps ) == 0.03
85+ assert ads .min_samples == 3
86+ assert ads .algorithm == "auto"
87+ assert ads .n_jobs == 1
88+ assert ads .pct_exact == 0.1
89+ assert ads .reps == 10
90+ assert ads .keep_solus is True
91+ assert ads .pct_thr == 0.9
9392 # Labels
9493 np .testing .assert_equal (ads .labels_ , self .lbls )
9594 # Votes
@@ -109,9 +108,16 @@ def test_adbscan(self):
109108 # ------------------------#
110109 np .random .seed (10 )
111110 ads = adbscan .ADBSCAN (0.03 , 3 , reps = 10 , keep_solus = True , n_jobs = - 1 )
112- _ = ads .fit (self .db , xy = ["x" , "y" ])
111+ with pytest .warns (
112+ UserWarning ,
113+ match = (
114+ "Multi-core implementation only works on relabelling solutions. "
115+ "Execution of draws is still sequential."
116+ ),
117+ ):
118+ _ = ads .fit (self .db , xy = ["x" , "y" ])
113119 # Params
114- self . assertEqual ( ads .n_jobs , - 1 )
120+ assert ads .n_jobs == - 1
115121 # Labels
116122 np .testing .assert_equal (ads .labels_ , self .lbls )
117123 # Votes
@@ -128,8 +134,8 @@ def test_adbscan(self):
128134 np .testing .assert_equal (ads .solus .astype (int ).sum (axis = 1 ).values , i_sum )
129135
130136
131- class Remap_lbls_Tester ( unittest . TestCase ) :
132- def setUp (self ):
137+ class TestRemapLBLS :
138+ def setup_method (self ):
133139 self .db = pandas .DataFrame ({"X" : [0 , 0.1 , 4 , 6 , 5 ], "Y" : [0 , 0.2 , 5 , 7 , 5 ]})
134140 self .solus = pandas .DataFrame (
135141 {
@@ -159,8 +165,8 @@ def test_remap_lbls(self):
159165 np .testing .assert_equal (lbls .values , vals )
160166
161167
162- class Ensemble_Tester ( unittest . TestCase ) :
163- def setUp (self ):
168+ class TestEnsemble :
169+ def setup_method (self ):
164170 self .db = pandas .DataFrame (
165171 {"X" : [0 , 0.1 , 4 , 6 , 5 ], "Y" : [0 , 0.2 , 5 , 7 , 5 ]}
166172 ).rename (lambda i : "i_" + str (i ))
@@ -192,8 +198,8 @@ def test_ensemble(self):
192198 np .testing .assert_almost_equal (ensemble_solu .values , vals )
193199
194200
195- class Get_Cluster_Boundary_Tester ( unittest . TestCase ) :
196- def setUp (self ):
201+ class TestGetClusterBoundary :
202+ def setup_method (self ):
197203 np .random .seed (10 )
198204 self .db = pandas .DataFrame (
199205 {"x" : np .random .random (25 ), "y" : np .random .random (25 )}
@@ -275,7 +281,7 @@ def test_get_cluster_boundary(self):
275281 "0.5475861559192435, 0.5425443680112613 0.7546476915298572, "
276282 "0.7217553174317995 0.8192869956700687))"
277283 )
278- self . assertEqual ( polys [0 ].wkt , wkt )
284+ assert polys . iloc [0 ].wkt == wkt
279285
280286 # ------------------------#
281287 # # Multi Core #
@@ -290,15 +296,4 @@ def test_get_cluster_boundary(self):
290296 "0.5475861559192435, 0.5425443680112613 0.7546476915298572, "
291297 "0.7217553174317995 0.8192869956700687))"
292298 )
293- self .assertEqual (polys [0 ].wkt , wkt )
294-
295-
296- suite = unittest .TestSuite ()
297- test_classes = [ADBSCAN_Tester , Remap_lbls_Tester , Ensemble_Tester ]
298- for i in test_classes :
299- a = unittest .TestLoader ().loadTestsFromTestCase (i )
300- suite .addTest (a )
301-
302- if __name__ == "__main__" :
303- runner = unittest .TextTestRunner ()
304- runner .run (suite )
299+ assert polys .iloc [0 ].wkt == wkt
0 commit comments