def testSingleEntityAndSubEntitySpecific(self): class BlueMarble(Entity): BLUE_SPECK = ['blueSpeck', Button] es = Searcher() es.add(MultiResultProxy(None, [BlueMarble], None)) result = es.search("blue marble") self.assertEqual(result.getEntity(), [BlueMarble])
def testSingleEntityAndSubEntityDefAmbiguous(self): class BlueMarble(Entity): BLUE_SPECK = ['blueSpeck', Button] es = Searcher() es.add(MultiResultProxy(None, [BlueMarble], None)) self.assertRaises(AmbiguousKeySearchException, es.search, "blue")
def testPassingProxyInvalidKeyRaisesException(self): class RedMarble(Entity): SPECK = ['speck', Button] class BlueMarble(Entity): SPECK = ['speck', Button] proxy = MultiResultProxy(None, [RedMarble, BlueMarble], None) # Passing an invalid key will return raise an EntityNotFound exception self.assertRaises(Exception, proxy.__getitem__, ['failEntity',Button])
def testMultiSearchSubEntityAmbiguous(self): class BlueMarble(Entity): BLUE_SPECK = ['blueSpeck', Button] class RedMarble(Entity): RED_SPECK = ['redSpeck', Button] es = Searcher() es.add(MultiResultProxy(None, [BlueMarble, RedMarble], None)) self.assertRaises(AmbiguousKeySearchException, es.search, "speck")
def testFindClassFromAmbiguousKeyReturnsError(self): class RedMarble(Entity): SPECK = ['speck', Button] class BlueMarble(Entity): SPECK = ['speck', Button] proxy = MultiResultProxy(None, [RedMarble, BlueMarble], None) # Make sure finding a class from ambiguous key raises exception self.assertRaises(Exception, proxy.__getitem__, RedMarble.SPECK) self.assertRaises(Exception, proxy.__getitem__, BlueMarble.SPECK)
def testCanSearchMultiProxyResultWithCustomParent(self): class BlueMarble(Entity): BLUE_SPECK = ['blueSpeck', Button] class RedMarble(Entity): RED_SPECK = ['redSpeck', Button] customParent = RedMarble(None) es = Searcher() es.add(MultiResultProxy(None, [(BlueMarble, customParent),], None)) result = es.search("blue speck") self.assertEqual(result.getEntity(), BlueMarble.BLUE_SPECK) self.assertEqual(result.getParent(), customParent)
def testMultiSearchSubEntitySpecific(self): class BlueMarble(Entity): BLUE_SPECK = ['blueSpeck', Button] class RedMarble(Entity): RED_SPECK = ['redSpeck', Button] es = Searcher() es.add(MultiResultProxy(None, [BlueMarble, RedMarble], None)) result = es.search("red speck") self.assertEqual(result.getEntity(), RedMarble.RED_SPECK) result = es.search("blue speck") self.assertEqual(result.getEntity(), BlueMarble.BLUE_SPECK)
def testFindClassFromKey(self): class RedMarble(Entity): RED_SPECK = ['redSpeck', Button] class BlueMarble(Entity): BLUE_SPECK = ['blueSpeck', Button] proxy = MultiResultProxy(None, [RedMarble, BlueMarble], None) # Supplying the RED_SPECK keyword will return the RedMarble class that it belongs to result = proxy[RedMarble.RED_SPECK] self.assertEqual(result.getName(), 'redSpeck') # Suppling the BLUE_SPEC keyword will return the BlueMarble class that it belongs to result = proxy[BlueMarble.BLUE_SPECK] self.assertEqual(result.getName(), 'blueSpeck')
def testResultParent(self): class GreenMarble(Entity): GREEN_SPECK = ['greenSpeck', Button] class RedMarble(Entity): RED_SPECK = ['redSpeck', Button] class BlueMarble(Entity): BLUE_SPECK = ['blueSpeck', Button] proxy = MultiResultProxy(None, [(RedMarble, BlueMarble(None)),(GreenMarble, BlueMarble(None))], None) result = proxy[RedMarble.RED_SPECK] self.assertEqual(result.getName(), 'redSpeck') self.assertEqual(result.getParent().getParent().getName(), 'BlueMarble') result = proxy[GreenMarble.GREEN_SPECK] self.assertEqual(result.getName(), 'greenSpeck') self.assertEqual(result.getParent().getParent().getName(), 'BlueMarble')
from log.robotFramework import Logger as RobotLogger from log import * from entity import Entity from region.tests.mockFinder import Finder from log.formatter import Formatter from config import Config from entity.searcher import Searcher from tests.mockTool import Tool import unittest from entity.multiResultProxy import MultiResultProxy Logger.setRobotLogger(RobotLogger()) Logger.setFormatter(Formatter) Formatter.setTool(Tool) Formatter.setConfig(Config) Entity.setLogger(Logger) Entity.setRegionFinderStrategy(Finder) Entity.setSearcherStrategy(Searcher) Entity.setMultiResultProxyStrategy(MultiResultProxy) MultiResultProxy.setEntitySearcher(Searcher)