Skip to content

Commit 304f03d

Browse files
Add __init__ method for model for education purpose and bring in unittests tests.
1 parent 9595426 commit 304f03d

File tree

3 files changed

+53
-26
lines changed

3 files changed

+53
-26
lines changed

stage5.1_fuller_application/pycasa/model/image_folder.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1+
2+
# General imports
13
import glob
2-
from os.path import expanduser, split
4+
from os.path import expanduser, isdir, split
35

46
import pandas as pd
57

8+
# ETS imports
69
from traits.api import (
710
Directory, HasStrictTraits, Instance, List, observe,
811
)
912

13+
# Local imports
1014
from pycasa.model.image_file import ImageFile
1115

1216
SUPPORTED_FORMATS = [".png", ".jpg", ".jpeg", ".PNG", ".JPG", ".JPEG"]
@@ -19,6 +23,14 @@ class ImageFolder(HasStrictTraits):
1923

2024
images = List(Instance(ImageFile))
2125

26+
def __init__(self, **traits):
27+
super(ImageFolder, self).__init__(**traits)
28+
import pdb ; pdb.set_trace()
29+
if not isdir(self.directory):
30+
msg = f"The provided directory isn't a real directory: " \
31+
f"{self.directory}"
32+
raise ValueError(msg)
33+
2234
@observe("directory")
2335
def _get_images(self, event):
2436
self.images = [
Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,31 @@
1-
from os.path import dirname, join
2-
from unittest import TestCase
3-
4-
import pandas as pd
1+
from os.path import dirname, join, split
2+
import unittest
53

64
from pycasa.model.image_folder import ImageFolder
75

86
import ets_tutorial
97

108
TUTORIAL_DIR = dirname(ets_tutorial.__file__)
11-
129
SAMPLE_IMG_DIR = join(TUTORIAL_DIR, "..", "sample_images")
1310

14-
HERE = dirname(__file__)
1511

16-
17-
class TestImageFolder(TestCase):
18-
def test_no_folder(self):
19-
with self.assertRaises(ValueError):
20-
ImageFolder()
12+
class TestImageFolder(unittest.TestCase):
13+
def setUp(self):
14+
self.filenames = ["IMG-0311_xmas_2020.JPG", "owls.jpg"]
15+
self.img_folder = ImageFolder(directory=SAMPLE_IMG_DIR)
2116

2217
def test_with_file(self):
2318
with self.assertRaises(ValueError):
24-
ImageFolder(path=__file__)
25-
26-
def test_empty_folder(self):
27-
img = ImageFolder(path=HERE)
28-
data = img.to_dataframe()
29-
self.assertIsInstance(data, pd.DataFrame)
30-
self.assertEqual(len(data), 0)
31-
32-
def test_real_folder(self):
33-
img = ImageFolder(path=SAMPLE_IMG_DIR)
34-
data = img.to_dataframe()
35-
self.assertEqual(len(data), 2)
36-
for key in ['ExifVersion', 'ExifImageWidth', 'ExifImageHeight']:
37-
self.assertIn(key, data.columns)
19+
ImageFolder(directory=__file__)
20+
21+
def test_filters_images(self):
22+
self.assertEqual(
23+
{split(img.filepath)[1] for img in self.img_folder.images},
24+
set(self.filenames)
25+
)
26+
27+
def test_create_metadata_df(self):
28+
df = self.img_folder.create_metadata_df()
29+
self.assertEqual(set(df.index), set(self.filenames))
30+
self.assertIn("ExifVersion", df)
31+
self.assertIn("ApertureValue", df)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import unittest
2+
from os.path import dirname, join
3+
4+
from traitsui.testing.api import UITester, IsVisible
5+
6+
import ets_tutorial
7+
from pycasa.model.image_folder import ImageFolder
8+
from pycasa.ui.image_folder_view import ImageFolderView
9+
10+
TUTORIAL_DIR = dirname(ets_tutorial.__file__)
11+
SAMPLE_IMG_DIR = join(TUTORIAL_DIR, "..", "sample_images")
12+
13+
14+
class TestImageFolderView(unittest.TestCase):
15+
def test_image_folder_view(self):
16+
# A smoke test.
17+
view = ImageFolderView(model=ImageFolder(directory=SAMPLE_IMG_DIR))
18+
tester = UITester()
19+
with tester.create_ui(view) as ui:
20+
df = tester.find_by_name(ui, "metadata_df")
21+
df.inspect(IsVisible())

0 commit comments

Comments
 (0)