Coverage for tests/test_naming.py: 33%
396 statements
« prev ^ index » next coverage.py v6.5.0, created at 2023-02-03 01:35 -0800
« prev ^ index » next coverage.py v6.5.0, created at 2023-02-03 01:35 -0800
1# This file is part of verify.
2#
3# Developed for the LSST Data Management System.
4# This product includes software developed by the LSST Project
5# (https://www.lsst.org).
6# See the COPYRIGHT file at the top-level directory of this distribution
7# for details of code ownership.
8#
9# This program is free software: you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation, either version 3 of the License, or
12# (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the GNU General Public License
20# along with this program. If not, see <https://www.gnu.org/licenses/>.
22import unittest
24from lsst.verify.naming import Name
27class NameConstructors(unittest.TestCase):
28 """Tests for Name constructor patterns."""
30 def test_fully_qualified_metric_name(self):
31 """Creating a fully-qualified metric name."""
32 ref_name = Name(package='validate_drp', metric='PA1')
34 self.assertEqual(
35 ref_name,
36 Name(metric='validate_drp.PA1')
37 )
39 # Use a Name to specifify metric field
40 self.assertEqual(
41 ref_name,
42 Name(metric=Name(package='validate_drp', metric='PA1'))
43 )
45 self.assertEqual(
46 ref_name,
47 Name(metric='validate_drp.PA1', package='validate_drp')
48 )
50 self.assertEqual(
51 ref_name,
52 Name('validate_drp.PA1')
53 )
55 self.assertEqual(
56 ref_name,
57 Name('validate_drp.PA1', metric='PA1')
58 )
60 with self.assertRaises(TypeError):
61 Name(metric='validate_drp.PA1', package='validate_base')
63 def test_metric_name(self):
64 """Creating a metric name."""
65 # Using a Name as an argument
66 self.assertEqual(
67 Name(metric='PA1'),
68 Name(metric=Name(metric='PA1'))
69 )
71 # Using the wrong type of name
72 with self.assertRaises(TypeError):
73 Name(metric=Name(spec='design_gri'))
75 def test_fully_qualified_specification_name(self):
76 """Creating fully-qualified specification name."""
77 ref_name = Name(package='validate_drp',
78 metric='PA1',
79 spec='design_gri')
81 self.assertEqual(
82 ref_name,
83 Name('validate_drp.PA1.design_gri')
84 )
86 # using a Name
87 self.assertEqual(
88 ref_name,
89 Name(ref_name)
90 )
92 self.assertEqual(
93 ref_name,
94 Name('validate_drp.PA1.design_gri',
95 metric='PA1', spec='design_gri')
96 )
98 def test_relative_spec_name(self):
99 """Creating a relative specification name."""
100 ref_name = Name(metric='PA1',
101 spec='design_gri')
103 self.assertEqual(
104 ref_name,
105 Name(spec='PA1.design_gri')
106 )
108 # Use a Name
109 self.assertEqual(
110 ref_name,
111 Name(spec=Name(metric='PA1', spec='design_gri'))
112 )
114 self.assertEqual(
115 ref_name,
116 Name(metric='PA1', spec='PA1.design_gri')
117 )
119 with self.assertRaises(TypeError):
120 Name(metric='PA2', spec='PA1.design_gri')
122 def test_specification_name(self):
123 """Creating a bare specification name."""
124 ref_name = Name(spec='design_gri')
126 # Ensure that Name can be used in addition to a string
127 self.assertEqual(
128 ref_name,
129 Name(spec=Name(spec='design_gri'))
130 )
132 # Using the wrong type of Name
133 with self.assertRaises(TypeError):
134 Name(spec=Name('validate_drp.PA1'))
136 def test_package_name(self):
137 """Creating a package name."""
138 # Ensure that Name can be used in addition to a string
139 self.assertEqual(
140 Name('validate_drp'),
141 Name(package=Name(package='validate_drp'))
142 )
145class NameComparisonTestCase(unittest.TestCase):
146 """Test cases for name equality/comparison testing."""
148 def setUp(self):
149 self.validate_drp_PA1 = Name('validate_drp.PA1')
150 self.validate_drp_PA1v2 = Name('validate_drp.PA1')
151 self.validate_drp_PA2 = Name('validate_drp.PA2')
153 self.a_a_a = Name('a.a.a')
154 self.a_b_a = Name('a.b.a')
155 self.a_a_b = Name('a.a.b')
156 self.b_a_a = Name('b.a.a')
157 self.b_b_a = Name('b.b.a')
158 self.b_b_b = Name('b.b.b')
160 def test_metric_equality(self):
161 self.assertTrue(
162 self.validate_drp_PA1 == self.validate_drp_PA1v2
163 )
164 self.assertFalse(
165 self.validate_drp_PA1 == self.validate_drp_PA2
166 )
168 def test_metric_inequality(self):
169 self.assertFalse(
170 self.validate_drp_PA1 != self.validate_drp_PA1v2
171 )
172 self.assertTrue(
173 self.validate_drp_PA1 != self.validate_drp_PA2
174 )
176 def test_lt(self):
177 self.assertTrue(self.a_a_a < self.b_a_a)
178 self.assertTrue(self.a_a_a < self.b_b_a)
179 self.assertTrue(self.a_a_a < self.b_b_b)
181 self.assertFalse(self.b_a_a < self.a_a_a)
182 self.assertFalse(self.b_b_a < self.a_a_a)
183 self.assertFalse(self.b_b_b < self.a_a_a)
185 self.assertTrue(self.a_a_a < self.a_b_a)
186 self.assertTrue(self.b_a_a < self.b_b_a)
187 self.assertTrue(self.b_b_a < self.b_b_b)
189 self.assertFalse(self.a_b_a < self.a_a_a)
190 self.assertFalse(self.b_b_a < self.b_a_a)
191 self.assertFalse(self.b_b_b < self.b_b_a)
193 self.assertFalse(self.a_a_a < self.a_a_a)
195 def test_gt(self):
196 self.assertFalse(self.a_a_a > self.b_a_a)
197 self.assertFalse(self.a_a_a > self.b_b_a)
198 self.assertFalse(self.a_a_a > self.b_b_b)
200 self.assertTrue(self.b_a_a > self.a_a_a)
201 self.assertTrue(self.b_b_a > self.a_a_a)
202 self.assertTrue(self.b_b_b > self.a_a_a)
204 self.assertFalse(self.a_a_a > self.a_b_a)
205 self.assertFalse(self.b_a_a > self.b_b_a)
206 self.assertFalse(self.b_b_a > self.b_b_b)
208 self.assertTrue(self.a_b_a > self.a_a_a)
209 self.assertTrue(self.b_b_a > self.b_a_a)
210 self.assertTrue(self.b_b_b > self.b_b_a)
212 self.assertFalse(self.a_a_a > self.a_a_a)
214 def test_le(self):
215 self.assertTrue(self.a_a_a <= self.b_a_a)
216 self.assertTrue(self.a_a_a <= self.b_b_a)
217 self.assertTrue(self.a_a_a <= self.b_b_b)
219 self.assertFalse(self.b_a_a <= self.a_a_a)
220 self.assertFalse(self.b_b_a <= self.a_a_a)
221 self.assertFalse(self.b_b_b <= self.a_a_a)
223 self.assertTrue(self.a_a_a <= self.a_b_a)
224 self.assertTrue(self.b_a_a <= self.b_b_a)
225 self.assertTrue(self.b_b_a <= self.b_b_b)
227 self.assertFalse(self.a_b_a <= self.a_a_a)
228 self.assertFalse(self.b_b_a <= self.b_a_a)
229 self.assertFalse(self.b_b_b <= self.b_b_a)
231 self.assertTrue(self.a_a_a <= self.a_a_a)
233 def test_ge(self):
234 self.assertFalse(self.a_a_a >= self.b_a_a)
235 self.assertFalse(self.a_a_a >= self.b_b_a)
236 self.assertFalse(self.a_a_a >= self.b_b_b)
238 self.assertTrue(self.b_a_a >= self.a_a_a)
239 self.assertTrue(self.b_b_a >= self.a_a_a)
240 self.assertTrue(self.b_b_b >= self.a_a_a)
242 self.assertFalse(self.a_a_a >= self.a_b_a)
243 self.assertFalse(self.b_a_a >= self.b_b_a)
244 self.assertFalse(self.b_b_a >= self.b_b_b)
246 self.assertTrue(self.a_b_a >= self.a_a_a)
247 self.assertTrue(self.b_b_a >= self.b_a_a)
248 self.assertTrue(self.b_b_b >= self.b_b_a)
250 self.assertTrue(self.a_a_a >= self.a_a_a)
252 def test_sort(self):
253 alist = [self.b_a_a, self.a_a_a, self.a_b_a]
254 alist.sort()
255 self.assertIs(alist[0], self.a_a_a)
256 self.assertIs(alist[1], self.a_b_a)
257 self.assertIs(alist[2], self.b_a_a)
260class FullyQualifiedMetricName(unittest.TestCase):
261 """Simple fully-qualified metric name."""
263 def setUp(self):
264 self.name = Name(package='validate_drp', metric='PA1')
266 def test_package_name(self):
267 self.assertEqual(self.name.package, 'validate_drp')
269 def test_metric_name(self):
270 self.assertEqual(self.name.metric, 'PA1')
272 def test_spec_name(self):
273 self.assertIsNone(self.name.spec)
275 def test_fqn(self):
276 self.assertEqual(
277 self.name.fqn,
278 'validate_drp.PA1')
280 def test_relative_name(self):
281 with self.assertRaises(AttributeError):
282 self.name.relative_name
284 def test_repr(self):
285 self.assertEqual(
286 repr(self.name),
287 "Name('validate_drp', 'PA1')")
289 def test_str(self):
290 self.assertEqual(
291 str(self.name),
292 'validate_drp.PA1'
293 )
295 def test_eq(self):
296 self.assertTrue(
297 self.name == Name(package='validate_drp', metric='PA1'))
298 self.assertFalse(
299 self.name == Name(package='validate_drp',
300 metric='PA1',
301 spec='design'))
302 self.assertFalse(
303 self.name == Name(package='validate_base',
304 metric='PA1'))
306 def test_hash(self):
307 self.assertEqual(
308 hash(self.name),
309 hash(Name('validate_drp.PA1'))
310 )
312 def test_contains(self):
313 self.assertTrue(
314 Name('validate_drp.PA1.design_gri') in self.name
315 )
316 self.assertFalse(
317 Name('validate_drp.PA2.design_gri') in self.name
318 )
319 self.assertFalse(
320 Name('validate_drp.PA2') in self.name
321 )
322 self.assertFalse(
323 Name('validate_drp') in self.name
324 )
326 def test_has_package(self):
327 self.assertTrue(self.name.has_package)
329 def test_has_metric(self):
330 self.assertTrue(self.name.has_metric)
332 def test_has_spec(self):
333 self.assertFalse(self.name.has_spec)
335 def test_has_relative(self):
336 self.assertFalse(self.name.has_relative)
338 def test_is_package(self):
339 self.assertFalse(self.name.is_package)
341 def test_is_metric(self):
342 self.assertTrue(self.name.is_metric)
344 def test_is_spec(self):
345 self.assertFalse(self.name.is_spec)
347 def test_is_fq(self):
348 self.assertTrue(self.name.is_fq)
350 def test_is_relative(self):
351 self.assertFalse(self.name.is_relative)
354class MetricName(unittest.TestCase):
355 """Metric name (not fully qualified)."""
357 def setUp(self):
358 self.name = Name(metric='PA1')
360 def test_package_name(self):
361 self.assertIsNone(self.name.package)
363 def test_metric_name(self):
364 self.assertEqual(self.name.metric, 'PA1')
366 def test_spec_name(self):
367 self.assertIsNone(self.name.spec)
369 def test_fqn(self):
370 with self.assertRaises(AttributeError):
371 self.name.fqn,
373 def test_relative_name(self):
374 with self.assertRaises(AttributeError):
375 self.name.relative_name
377 def test_repr(self):
378 self.assertEqual(
379 repr(self.name),
380 "Name(metric='PA1')")
382 def test_str(self):
383 self.assertEqual(
384 str(self.name),
385 'PA1'
386 )
388 def test_eq(self):
389 self.assertTrue(
390 self.name == Name(metric='PA1'))
391 self.assertFalse(
392 self.name == Name(package='validate_drp', metric='PA2'))
393 self.assertFalse(
394 self.name == Name(metric='PA2'))
396 def test_hash(self):
397 self.assertEqual(
398 hash(self.name),
399 hash(Name(metric='PA1'))
400 )
401 self.assertNotEqual(
402 hash(self.name),
403 hash(Name(package='vaidate_drp', metric='PA1'))
404 )
406 def test_contains(self):
407 self.assertTrue(
408 Name(spec='PA1.design_gri') in self.name
409 )
410 self.assertFalse(
411 Name('validate_drp.PA1.design_gri') in self.name
412 )
413 self.assertFalse(
414 Name('validate_drp.PA2.design_gri') in self.name
415 )
416 self.assertFalse(
417 Name('validate_drp.PA2') in self.name
418 )
419 self.assertFalse(
420 Name('validate_drp') in self.name
421 )
423 def test_has_package(self):
424 self.assertFalse(self.name.has_package)
426 def test_has_metric(self):
427 self.assertTrue(self.name.has_metric)
429 def test_has_spec(self):
430 self.assertFalse(self.name.has_spec)
432 def test_has_relative(self):
433 self.assertFalse(self.name.has_relative)
435 def test_is_package(self):
436 self.assertFalse(self.name.is_package)
438 def test_is_metric(self):
439 self.assertTrue(self.name.is_metric)
441 def test_is_spec(self):
442 self.assertFalse(self.name.is_spec)
444 def test_is_fq(self):
445 self.assertFalse(self.name.is_fq)
447 def test_is_relative(self):
448 self.assertFalse(self.name.is_relative)
451class FullyQualifiedSpecificationName(unittest.TestCase):
452 """Simple fully-qualified specification name."""
454 def setUp(self):
455 self.name = Name(package='validate_drp',
456 metric='PA1',
457 spec='design_gri')
459 def test_package_name(self):
460 self.assertEqual(self.name.package, 'validate_drp')
462 def test_metric_name(self):
463 self.assertEqual(self.name.metric, 'PA1')
465 def test_spec_name(self):
466 self.assertEqual(self.name.spec, 'design_gri')
468 with self.assertRaises(TypeError):
469 Name('validate_drp.PA1.design_gri', spec='minimum')
471 with self.assertRaises(TypeError):
472 Name('validate_drp.PA1.design_gri', metric='PA2')
474 # Can't create a specification with a metric gap
475 with self.assertRaises(TypeError):
476 Name(package='validate_drp', spec='design')
478 def test_fqn(self):
479 self.assertEqual(
480 self.name.fqn,
481 'validate_drp.PA1.design_gri')
483 def test_relative_name(self):
484 self.assertEqual(
485 self.name.relative_name,
486 'PA1.design_gri')
488 def test_repr(self):
489 self.assertEqual(
490 repr(self.name),
491 "Name('validate_drp', 'PA1', 'design_gri')")
493 def test_str(self):
494 self.assertEqual(
495 str(self.name),
496 'validate_drp.PA1.design_gri'
497 )
499 def test_eq(self):
500 self.assertTrue(
501 self.name == Name(package='validate_drp',
502 metric='PA1',
503 spec='design_gri'))
504 self.assertFalse(
505 self.name == Name(package='validate_drp',
506 metric='PA1',
507 spec='minimum'))
508 self.assertFalse(
509 self.name == Name(metric='PA1',
510 spec='design_gri'))
511 self.assertFalse(
512 self.name == Name(spec='design_gri'))
514 def test_hash(self):
515 self.assertEqual(
516 hash(self.name),
517 hash(Name('validate_drp.PA1.design_gri'))
518 )
519 self.assertNotEqual(
520 hash(self.name),
521 hash(Name('validate_drp.PA1.minimum'))
522 )
523 self.assertNotEqual(
524 hash(self.name),
525 hash(Name(spec='PA1.design_gri'))
526 )
528 def test_has_package(self):
529 self.assertTrue(self.name.has_package)
531 def test_has_metric(self):
532 self.assertTrue(self.name.has_metric)
534 def test_has_spec(self):
535 self.assertTrue(self.name.has_spec)
537 def test_has_relative(self):
538 self.assertTrue(self.name.has_relative)
540 def test_is_package(self):
541 self.assertFalse(self.name.is_package)
543 def test_is_metric(self):
544 self.assertFalse(self.name.is_metric)
546 def test_is_spec(self):
547 self.assertTrue(self.name.is_spec)
549 def test_is_fq(self):
550 self.assertTrue(self.name.is_fq)
552 def test_is_relative(self):
553 self.assertFalse(self.name.is_relative)
556class RelativeSpecificationName(unittest.TestCase):
557 """Metric-relative specification name."""
559 def setUp(self):
560 self.name = Name(metric='PA1',
561 spec='design_gri')
563 def test_package_name(self):
564 self.assertIsNone(self.name.package)
566 def test_metric_name(self):
567 self.assertEqual(self.name.metric, 'PA1')
569 def test_spec_name(self):
570 self.assertEqual(self.name.spec, 'design_gri')
572 def test_fqn(self):
573 with self.assertRaises(AttributeError):
574 self.name.fqn
576 def test_relative_name(self):
577 self.assertEqual(
578 self.name.relative_name,
579 'PA1.design_gri')
581 def test_repr(self):
582 self.assertEqual(
583 repr(self.name),
584 "Name(metric='PA1', spec='design_gri')")
586 def test_str(self):
587 self.assertEqual(
588 str(self.name),
589 'PA1.design_gri'
590 )
592 def test_eq(self):
593 self.assertTrue(
594 self.name == Name(metric='PA1', spec='design_gri'))
595 self.assertFalse(
596 self.name == Name(package='validate_drp',
597 metric='PA1',
598 spec='design_gri'))
599 self.assertFalse(
600 self.name == Name(metric='PA1', spec='minimum'))
602 def test_has_package(self):
603 self.assertFalse(self.name.has_package)
605 def test_has_metric(self):
606 self.assertTrue(self.name.has_metric)
608 def test_has_spec(self):
609 self.assertTrue(self.name.has_spec)
611 def test_has_relative(self):
612 self.assertTrue(self.name.has_relative)
614 def test_is_package(self):
615 self.assertFalse(self.name.is_package)
617 def test_is_metric(self):
618 self.assertFalse(self.name.is_metric)
620 def test_is_spec(self):
621 self.assertTrue(self.name.is_spec)
623 def test_is_fq(self):
624 self.assertFalse(self.name.is_fq)
626 def test_is_relative(self):
627 self.assertTrue(self.name.is_relative)
630class SpecificationName(unittest.TestCase):
631 """A bare specification name."""
633 def setUp(self):
634 self.name = Name(spec='design_gri')
636 def test_package_name(self):
637 self.assertIsNone(self.name.package)
639 def test_metric_name(self):
640 self.assertIsNone(self.name.metric)
642 def test_spec_name(self):
643 self.assertEqual(self.name.spec, 'design_gri')
645 def test_fqn(self):
646 with self.assertRaises(AttributeError):
647 self.name.fqn
649 def test_relative_name(self):
650 with self.assertRaises(AttributeError):
651 self.name.relative_name
653 def test_repr(self):
654 self.assertEqual(
655 repr(self.name),
656 "Name(spec='design_gri')")
658 def test_str(self):
659 self.assertEqual(
660 str(self.name),
661 'design_gri'
662 )
664 def test_eq(self):
665 self.assertTrue(
666 self.name == Name(spec='design_gri'))
667 self.assertFalse(
668 self.name == Name(metric='PA1', spec='design_gri'))
669 self.assertFalse(
670 self.name == Name(spec='minimum'))
672 def test_contains(self):
673 self.assertFalse(
674 Name(spec='design_gri') in self.name
675 )
676 self.assertFalse(
677 Name(spec='PA1.design_gri') in self.name
678 )
679 self.assertFalse(
680 Name('validate_drp.PA1.design_gri') in self.name
681 )
682 self.assertFalse(
683 Name('validate_drp.PA1') in self.name
684 )
685 self.assertFalse(
686 Name('validate_drp') in self.name
687 )
689 def test_has_package(self):
690 self.assertFalse(self.name.has_package)
692 def test_has_metric(self):
693 self.assertFalse(self.name.has_metric)
695 def test_has_spec(self):
696 self.assertTrue(self.name.has_spec)
698 def test_has_relative(self):
699 self.assertFalse(self.name.has_relative)
701 def test_is_package(self):
702 self.assertFalse(self.name.is_package)
704 def test_is_metric(self):
705 self.assertFalse(self.name.is_metric)
707 def test_is_spec(self):
708 self.assertTrue(self.name.is_spec)
710 def test_is_fq(self):
711 self.assertFalse(self.name.is_fq)
713 def test_is_relative(self):
714 self.assertFalse(self.name.is_relative)
717class PackageName(unittest.TestCase):
718 """Package name."""
720 def setUp(self):
721 self.name = Name(package='validate_drp')
723 def test_package_name(self):
724 self.assertEqual(self.name.package, 'validate_drp')
726 def test_metric_name(self):
727 self.assertIsNone(self.name.metric)
729 def test_spec_name(self):
730 self.assertIsNone(self.name.spec)
732 def test_fqn(self):
733 self.assertEqual(
734 self.name.fqn,
735 'validate_drp')
737 def test_relative_name(self):
738 with self.assertRaises(AttributeError):
739 self.name.relative_name
741 def test_repr(self):
742 self.assertEqual(
743 repr(self.name),
744 "Name('validate_drp')")
746 def test_str(self):
747 self.assertEqual(
748 str(self.name),
749 'validate_drp'
750 )
752 def test_eq(self):
753 self.assertTrue(
754 self.name == Name('validate_drp')
755 )
756 self.assertTrue(
757 self.name == Name(package='validate_drp'))
758 self.assertFalse(
759 self.name == Name(package='validate_base'))
760 self.assertFalse(
761 self.name == Name(package='validate_drp',
762 metric='PA1'))
764 def test_contains(self):
765 self.assertFalse(
766 Name(spec='PA1.design_gri') in self.name
767 )
768 self.assertTrue(
769 Name('validate_drp.PA1.design_gri') in self.name
770 )
771 self.assertTrue(
772 Name('validate_drp.PA2.design_gri') in self.name
773 )
774 self.assertFalse(
775 Name('validate_drp') in self.name
776 )
778 def test_has_package(self):
779 self.assertTrue(self.name.has_package)
781 def test_has_metric(self):
782 self.assertFalse(self.name.has_metric)
784 def test_has_spec(self):
785 self.assertFalse(self.name.has_spec)
787 def test_has_relative(self):
788 self.assertFalse(self.name.has_relative)
790 def test_is_package(self):
791 self.assertTrue(self.name.is_package)
793 def test_is_metric(self):
794 self.assertFalse(self.name.is_metric)
796 def test_is_spec(self):
797 self.assertFalse(self.name.is_spec)
799 def test_is_fq(self):
800 self.assertTrue(self.name.is_fq)
802 def test_is_relative(self):
803 self.assertFalse(self.name.is_relative)
806if __name__ == "__main__": 806 ↛ 807line 806 didn't jump to line 807, because the condition on line 806 was never true
807 unittest.main()