Mercurial > enso_core
changeset 28:cff69f571315
Added two unit test suites; one of the tests in one of the suites (for command suggestions) strangely fails at present.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Sat, 23 Feb 2008 09:21:00 -0600 |
parents | 943e412a8bd9 |
children | 47bcdb1de2e8 |
files | tests/test_command_manager.py tests/test_command_suggestions.py |
diffstat | 2 files changed, 165 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test_command_manager.py Sat Feb 23 09:21:00 2008 -0600 @@ -0,0 +1,63 @@ +""" + Tests for the Command Manager. +""" + +# ---------------------------------------------------------------------------- +# Imports +# ---------------------------------------------------------------------------- + +import unittest +import os + +from enso.ui.commands.manager import CommandObjectRegistry +from enso.ui.commands.manager import CommandAlreadyRegisteredError +from enso.ui.commands.interfaces import CommandExpression + + +# ---------------------------------------------------------------------------- +# Object Registry Unit Tests +# ---------------------------------------------------------------------------- + +class FakeCommand: + def __init__( self, name ): + self.name = name + +class RegistryTester( unittest.TestCase ): + def setUp( self ): + self.TESTS = range( ord("a"), ord("z") ) + self.TESTS = [ chr(i) for i in self.TESTS ] + + self.registry = CommandObjectRegistry() + for name in self.TESTS: + expr = CommandExpression( name ) + self.registry.addCommandObj( FakeCommand(name), expr ) + + + def tearDown( self ): + self.registry = None + + def testAlreadyRegistered( self ): + for name in self.TESTS: + expr = CommandExpression( name ) + self.failUnlessRaises( CommandAlreadyRegisteredError, + self.registry.addCommandObj, + FakeCommand(name), expr ) + + def testRegistered( self ): + for name in self.TESTS: + cmd = self.registry.getCommandObj( name ) + self.failUnlessEqual( name, cmd.name ) + + self.failUnlessEqual( set( self.registry.getCommandList() ), + set( self.TESTS ) ) + + # TODO: Match testing. + # TODO: Suggestion testing. + + +# ---------------------------------------------------------------------------- +# Script +# ---------------------------------------------------------------------------- + +if __name__ == "__main__": + unittest.main()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test_command_suggestions.py Sat Feb 23 09:21:00 2008 -0600 @@ -0,0 +1,102 @@ +""" + Tester file for Suggestion objects (including auto-completions). +""" + +# ---------------------------------------------------------------------------- +# Imports +# ---------------------------------------------------------------------------- + +import unittest + +from enso.ui.commands import suggestions + + +# ---------------------------------------------------------------------------- +# Unit Tests +# ---------------------------------------------------------------------------- + +class SuggestionBasicTests( unittest.TestCase ): + SOURCE = "abcd" + SUGGESTIONS = [ + ( "zabcd", "<ins>z</ins>abcd" ), + ( "azbcd", "a<ins>z</ins>bcd" ), + ( "abzcd", "ab<ins>z</ins>cd" ), + ( "abczd", "abc<ins>z</ins>d" ), + ( "abcdz", "abcd<ins>z</ins>" ), + ( "zbcd", "<alt>z</alt>bcd" ), + ( "azcd", "a<alt>z</alt>cd" ), + ( "abzd", "ab<alt>z</alt>d" ), + ( "abcz", "abc<alt>z</alt>" ), + ] + + SUGGESTIONS_SHORT = [ + ( "abc", "abc" ), + ( "azd", "a<alt>z</alt>d" ), + ] + + SUGGESTIONS_SORT = [ + ( "abcdz", "abcd<ins>z</ins>" ), + ( "abcdzz", "abcd<ins>zz</ins>" ), + ( "abcdzzz", "abcd<ins>zzz</ins>" ), + ( "abcdzzzz", "abcd<ins>zzzz</ins>" ), + ( "abcdzzzzz", "abcd<ins>zzzzz</ins>" ), + ( "abcdzzzzzz", "abcd<ins>zzzzzz</ins>" ), + ( "abcdzzzzzzz", "abcd<ins>zzzzzzz</ins>" ), + ( "abcdzzzzzzzz", "abcd<ins>zzzzzzzz</ins>" ), + ] + + def testSuggestions( self ): + for text, xmlText in self.SUGGESTIONS: + sugg = suggestions.Suggestion( self.SOURCE, text ) + self.failUnlessEqual( sugg.toText(), text ) + self.failUnlessEqual( sugg.toXml(), xmlText ) + self.failUnlessEqual( sugg.getSource(), self.SOURCE ) + + def testComparison( self ): + aSugg = suggestions.Suggestion( self.SOURCE, + self.SUGGESTIONS_SORT[0][0] ) + bSugg = suggestions.Suggestion( self.SOURCE, + self.SUGGESTIONS_SORT[1][0] ) + cSugg = suggestions.Suggestion( self.SOURCE, + self.SUGGESTIONS_SORT[1][0] ) + + self.failUnless( aSugg != bSugg ) + self.failUnless( bSugg != aSugg ) + self.failUnless( bSugg == cSugg ) + self.failUnless( cSugg == bSugg ) + self.failUnless( aSugg != cSugg ) + self.failUnless( cSugg != aSugg ) + + self.failUnless( cmp( aSugg, bSugg ) != 0 ) + self.failUnless( cmp( bSugg, cSugg ) == 0 ) + self.failUnless( cmp( aSugg, cSugg ) != 0 ) + + NOT_SUGGESTIONS = [ None, aSugg.toText(), 0, 1, False ] + + for obj in NOT_SUGGESTIONS: + self.failIf( aSugg == obj ) + self.failIf( bSugg == obj ) + self.failIf( cSugg == obj ) + + self.failUnless( aSugg != obj ) + self.failUnless( bSugg != obj ) + self.failUnless( cSugg != obj ) + + def testAutoCompletion( self ): + for sugg in self.SUGGESTIONS_SHORT: + self.failUnlessRaises( AssertionError, + suggestions.AutoCompletion, + self.SOURCE, + sugg ) + + # Make sure we can create empty AutoCompletions + # We're checking to see whether errors get raised. + suggestions.AutoCompletion( self.SOURCE, "" ) + + +# ---------------------------------------------------------------------------- +# Script +# ---------------------------------------------------------------------------- + +if __name__ == "__main__": + unittest.main()