diff tests/test_command_suggestions.py @ 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
children
line wrap: on
line diff
--- /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()