diff --git a/tests/test_databases.py b/tests/test_databases.py index c2b9c446f048a32c55ed11741675f50272a551b3..1ed789367353f788f7c3c6a17bbe3d28b2b65cd3 100644 --- a/tests/test_databases.py +++ b/tests/test_databases.py @@ -1,6 +1,10 @@ #!/usr/bin/env python -# vim: set fileencoding=utf-8 : -# Thu May 24 10:41:42 CEST 2012 + +"""Test all the Database Interfaces for general function and sample loading if possible. + +When the data samples are not available (e.g. on the CI runners), the ``loading`` tests +are skipped. +""" from unittest import SkipTest @@ -9,7 +13,8 @@ import numpy as np import bob.bio.base -def test_replay_attack(): +def test_replay_attack_protocol(): + """Test the replay-attack database interface without loading samples.""" database = bob.bio.base.load_resource( "replay-attack", "database", @@ -42,6 +47,15 @@ def test_replay_attack(): == 1000 ) + +def test_replay_attack_loading(): + """Test the loading of samples of the replay-attack database.""" + database = bob.bio.base.load_resource( + "replay-attack", + "database", + preferred_package="bob.pad.face", + package_prefix="bob.pad.", + ) sample = database.sort(database.samples())[0] try: annot = dict(sample.annotations["0"]) @@ -61,7 +75,8 @@ def test_replay_attack(): raise SkipTest(e) -def test_replay_mobile(): +def test_replay_mobile_protocol(): + """Test the replay-mobile database interface without loading samples.""" database = bob.bio.base.load_resource( "replay-mobile", "database", @@ -122,6 +137,18 @@ def test_replay_mobile(): "bottomright": [1111, 495], }, annot + +def test_replay_mobile_loading(): + """Test the loading of samples of the replay-mobile database.""" + database = bob.bio.base.load_resource( + "replay-mobile", + "database", + preferred_package="bob.pad.face", + package_prefix="bob.pad.", + ) + all_samples = database.sort(database.samples()) + sample = all_samples[0] + sample2 = [s for s in all_samples if not s.should_flip][0] try: assert sample.data.shape == (20, 3, 1280, 720), sample.data.shape np.testing.assert_equal(sample.data[0][:, 0, 0], [13, 13, 13]) @@ -132,7 +159,8 @@ def test_replay_mobile(): # Test the mask_attack database -def test_mask_attack(): +def test_mask_attack_protocol(): + """Test the mask-attack database interface without loading samples.""" mask_attack = bob.bio.base.load_resource( "mask-attack", "database", @@ -171,6 +199,16 @@ def test_mask_attack(): assert len(mask_attack.samples(groups=["dev"], purposes="attack")) == 25 assert len(mask_attack.samples(groups=["eval"], purposes="attack")) == 25 + +def test_mask_attack_loading(): + """Test the loading of samples of the mask-attack database.""" + mask_attack = bob.bio.base.load_resource( + "mask-attack", + "database", + preferred_package="bob.pad.face", + package_prefix="bob.pad.", + ) + sample = mask_attack.samples()[0] try: assert sample.data.shape == (20, 3, 480, 640) @@ -186,7 +224,8 @@ def test_mask_attack(): raise SkipTest(e) -def test_casia_fasd(): +def test_casia_fasd_protocols(): + """Test the casia-fasd database interface without loading samples.""" casia_fasd = bob.bio.base.load_resource( "casia-fasd", "database", @@ -201,6 +240,16 @@ def test_casia_fasd(): assert len(casia_fasd.samples(groups="train")) == 180 assert len(casia_fasd.samples(groups="dev")) == 60 assert len(casia_fasd.samples(groups="eval")) == 360 + + +def test_casia_fasd_loading(): + """Test the loading of samples of the casia-fasd database.""" + casia_fasd = bob.bio.base.load_resource( + "casia-fasd", + "database", + preferred_package="bob.pad.face", + package_prefix="bob.pad.", + ) sample = casia_fasd.samples()[0] try: assert sample.data.shape == (20, 3, 480, 640) @@ -209,7 +258,12 @@ def test_casia_fasd(): raise SkipTest(e) -def test_casia_surf(): +def test_casia_surf_protocol(): + """Test the casia-surf database interface without loading samples. + + As the protocol definition files are shipped with the data, this test will also be + skipped when the original directory is not set. + """ try: casia_surf = bob.bio.base.load_resource( "casia-surf", @@ -225,6 +279,19 @@ def test_casia_surf(): assert len(casia_surf.samples(groups="train")) == 29266 assert len(casia_surf.samples(groups="dev")) == 9608 assert len(casia_surf.samples(groups="eval")) == 57710 + except FileNotFoundError as e: + raise SkipTest(e) + + +def test_casia_surf_loading(): + """Test the loading of samples of the casia-surf database.""" + try: + casia_surf = bob.bio.base.load_resource( + "casia-surf", + "database", + preferred_package="bob.pad.face", + package_prefix="bob.pad.", + ) sample = casia_surf.samples()[0] assert sample.data.shape == (1, 3, 279, 279) np.testing.assert_equal(sample.data[0][:, 0, 0], [0, 0, 0]) @@ -234,7 +301,8 @@ def test_casia_surf(): raise SkipTest(e) -def test_swan(): +def test_swan_protocol(): + """Test the swan database interface without loading samples.""" database = bob.bio.base.load_resource( "swan", "database", @@ -264,6 +332,15 @@ def test_swan(): == 2502 ) + +def test_swan_loading(): + """Test the loading of samples of the swan database.""" + database = bob.bio.base.load_resource( + "swan", + "database", + preferred_package="bob.pad.face", + package_prefix="bob.pad.", + ) sample = database.sort(database.samples())[0] try: annot = dict(sample.annotations["0"]) @@ -283,7 +360,8 @@ def test_swan(): raise SkipTest(e) -def test_oulu_npu(): +def test_oulu_npu_protocol(): + """Test the oulu-npu database interface without loading samples.""" database = bob.bio.base.load_resource( "oulu-npu", "database", @@ -327,6 +405,16 @@ def test_oulu_npu(): == 960 + 720 + 480 ) + +def test_oulu_npu_loading(): + """Test the loading of samples of the oulu-npu database.""" + database = bob.bio.base.load_resource( + "oulu-npu", + "database", + preferred_package="bob.pad.face", + package_prefix="bob.pad.", + ) + sample = database.sort(database.samples())[0] try: annot = dict(sample.annotations["0"])