Skip to content

Commit

Permalink
More fixes, tests
Browse files Browse the repository at this point in the history
  • Loading branch information
glitchassassin committed Apr 21, 2017
1 parent d90161f commit e246dc4
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 9 deletions.
4 changes: 2 additions & 2 deletions coverage.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 3 additions & 1 deletion lackey/Geometry.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,13 @@ def getMonitor(self):
return scr if scr is not None else Screen(0)
def getColor(self):
scr = self.getScreen()
if scr is None:
return None
offset = scr.getTopLeft().getOffset(self)
return self.getScreen().getBitmap()[offset.x, offset.y]
def getOffset(self, loc):
""" Returns the offset between the given point and this point """
return Location(loc.x - x, loc.y - y)
return Location(loc.x - self.x, loc.y - self.y)
def grow(self, *args):
""" Creates a region around the given point Valid arguments:
Expand Down
8 changes: 5 additions & 3 deletions lackey/RegionMatching.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def __init__(self, target=None):
self.imagePattern = target.isImagePattern()
elif isinstance(target, basestring):
self.setFilename(target)
elif isinstance(target, np.ndarray):
elif isinstance(target, numpy.ndarray):
self.setImage(target)
elif target is not None:
raise TypeError("Unrecognized argument for Pattern()")
Expand All @@ -76,7 +76,7 @@ def exact(self):
pattern = Pattern(self.path)
pattern.similarity = 1.0
return pattern
def isValid():
def isValid(self):
return (self.image is not None)
def targetOffset(self, dx, dy):
""" Returns a new Pattern with the given target offset """
Expand Down Expand Up @@ -110,6 +110,8 @@ def setImage(self, img):
self.image = img
self.imagePattern = True
return self
def getImage(self):
return self.image
def getTargetOffset(self):
""" Returns the target offset as a Location(dx, dy) """
return self.offset
Expand Down Expand Up @@ -579,7 +581,7 @@ def wait(self, pattern, seconds=None):
if time.time() >= timeout:
break
path = pattern.path if isinstance(pattern, Pattern) else pattern
findFailedRetry = _raiseFindFailed("Could not find pattern '{}'".format(path))
findFailedRetry = self._raiseFindFailed("Could not find pattern '{}'".format(path))
if findFailedRetry:
time.sleep(self._repeatWaitTime)
return None
Expand Down
1 change: 0 additions & 1 deletion lackey/SettingsDebug.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,6 @@ class SettingsMaster(object):
## File Settings
# Path to Sikuli project - might not be current directory
try:
print(__main__.__file__)
BundlePath = os.path.dirname(os.path.abspath(os.path.join(os.getcwd(), __main__.__file__)))
except AttributeError:
BundlePath = os.path.dirname(os.path.abspath(os.getcwd()))
Expand Down
1 change: 1 addition & 0 deletions local_tests.ps1
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
python -m coverage run --source=lackey -m unittest tests.test_cases
py -3 -m coverage run -a --source=lackey -m unittest tests.test_cases
coverage html
rm coverage.svg
coverage-badge -o coverage.svg
29 changes: 27 additions & 2 deletions tests/appveyor_test_cases.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import inspect
import subprocess
import unittest
import numpy
import time
import sys
import os
Expand Down Expand Up @@ -36,6 +37,17 @@ def test_offsets(self):
offset = self.test_loc.left(7)
self.assertEqual(offset.getTuple(), (3,11))

def test_screen_methods(self):
outside_loc = lackey.Location(-10, -10)
self.assertIsNone(outside_loc.getScreen()) # Should be outside all screens and return None
self.assertEqual(self.test_loc.getScreen().getID(), 0) # Test location should be on screen 0
self.assertEqual(outside_loc.getMonitor().getID(), 0) # Outside all screens, should return default monitor (0)
self.assertEqual(self.test_loc.getMonitor().getID(), 0) # Outside all screens, should return default monitor (0)
self.assertIsNone(outside_loc.getColor()) # No color outside all screens, should return None
self.assertIsInstance(self.test_loc.getColor(), numpy.ndarray) # No color outside all screens, should return None



class TestPatternMethods(unittest.TestCase):
def setUp(self):
self.pattern = lackey.Pattern("tests\\test_pattern.png")
Expand All @@ -45,6 +57,7 @@ def test_defaults(self):
self.assertIsInstance(self.pattern.offset, lackey.Location)
self.assertEqual(self.pattern.offset.getTuple(), (0,0))
self.assertEqual(self.pattern.path[-len("tests\\test_pattern.png"):], "tests\\test_pattern.png")


def test_setters(self):
test_pattern = self.pattern.similar(0.5)
Expand All @@ -56,11 +69,23 @@ def test_setters(self):
test_pattern = self.pattern.targetOffset(3, 5)
self.assertEqual(test_pattern.similarity, 0.7)
self.assertEqual(test_pattern.path[-len("tests\\test_pattern.png"):], "tests\\test_pattern.png")
self.assertEqual(test_pattern.offset.getTuple(), (3,5))
self.assertEqual(test_pattern.offset.getTuple(), (3, 5))

def test_getters(self):
self.assertEqual(self.pattern.getFilename()[-len("tests\\test_pattern.png"):], "tests\\test_pattern.png")
self.assertEqual(self.pattern.getTargetOffset().getTuple(), (0,0))
self.assertEqual(self.pattern.getTargetOffset().getTuple(), (0, 0))
self.assertEqual(self.pattern.getSimilar(), 0.7)

def test_constructor(self):
cloned_pattern = lackey.Pattern(self.pattern)
self.assertTrue(cloned_pattern.isValid())
pattern_from_image = lackey.Pattern(self.pattern.getImage())
self.assertTrue(pattern_from_image.isImagePattern())
with self.assertRaises(TypeError):
lackey.Pattern(True)
with self.assertRaises(lackey.ImageMissing):
lackey.Pattern("non_existent_file.png")

class TestObserverEventMethods(unittest.TestCase):
def setUp(self):
self.r = lackey.Screen(0)
Expand Down
1 change: 1 addition & 0 deletions tests/test_cases.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,7 @@ def testAroundMethods(self):
grow_region = center_region.grow(10, 5)
self.assertTrue(grow_region.isRegionValid())

@unittest.skip("Requires user intervention")
class TestRasterMethods(unittest.TestCase):
def setUp(self):
self.r = lackey.Screen(0)
Expand Down

0 comments on commit e246dc4

Please sign in to comment.