diff options
author | Fred Drake <fdrake@acm.org> | 2000-06-30 19:36:23 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 2000-06-30 19:36:23 (GMT) |
commit | 2658d15d45b7ce99d36fbca2e0d7cc8b3071f892 (patch) | |
tree | b2aac9418b8b760b1b66729e2a50e0f4fe8b4e24 | |
parent | 0412e494b86c9b45fb57aad9bf741c8cae8046f9 (diff) | |
download | cpython-2658d15d45b7ce99d36fbca2e0d7cc8b3071f892.zip cpython-2658d15d45b7ce99d36fbca2e0d7cc8b3071f892.tar.gz cpython-2658d15d45b7ce99d36fbca2e0d7cc8b3071f892.tar.bz2 |
Paul Prescod <paul@prescod.net>:
Regression test for the new winreg.py module.
[Could a Windows person someone please review this?]
-rw-r--r-- | Lib/test/test_winreg2.py | 341 |
1 files changed, 341 insertions, 0 deletions
diff --git a/Lib/test/test_winreg2.py b/Lib/test/test_winreg2.py new file mode 100644 index 0000000..28c998e --- /dev/null +++ b/Lib/test/test_winreg2.py @@ -0,0 +1,341 @@ +from winreg import hives, createKey, openKey, flags, deleteKey, regtypes +import sys, traceback +import time + +def testHives(): + hivenames = ["HKEY_CLASSES_ROOT","HKEY_CURRENT_USER","HKEY_LOCAL_MACHINE", + "HKEY_USERS","HKEY_CURRENT_CONFIG"] #, # + for hivename in hivenames: + hive = hives[ hivename ] + print hive.name + assert hive.handle + assert hive.getSubkeys() + for hivename in ["HKEY_DYN_DATA", "HKEY_PERFORMANCE_DATA"]: + hive = hives[ hivename ] + print hive.name + assert hive.handle + assert not hive.getValues() + assert not hive.getSubkeys() + +def testNonZero(): + key=hives["HKLM"].openSubkey( "SOFTWARE" ) + assert key.openSubkey( "Microsoft" ) + assert key + key.close() + assert not key + try: + key.openSubkey( "Microsoft" ) + assert 0 + except EnvironmentError: + pass + +def testCmp(): + HKLM=hives["HKLM"] + assert (openKey("HKLM\\SOFTWARE")==\ + HKLM.openSubkey("SOFTWARE")) + assert not HKLM.openSubkey("SYSTEM")!=HKLM.openSubkey("SYSTEM") + assert HKLM.openSubkey("SOFTWARE")!=HKLM.openSubkey("SYSTEM") + assert not HKLM.openSubkey("SOFTWARE")==HKLM.openSubkey("SYSTEM") + assert not HKLM.openSubkey("SOFTWARE")=="spam" + assert ((HKLM.openSubkey("SOFTWARE")<"spam") != + (HKLM.openSubkey("SOFTWARE")>"spam")) + +def testClose(): + key=hives["HKLM"].openSubkey( "SOFTWARE" ) + assert key + key.close() + assert not key + +def testOpen(): + assert openKey( r"HKLM" ) + assert openKey( r"HKLM\HARDWARE" ) + assert openKey( r"HKLM\HARDWARE\DESCRIPTION\System" ) + +def testOpenFailure(): + try: + print openKey( r"HKCU\Software\Python\A\B\C\D" ) + assert 0 # + except EnvironmentError: + pass + +def testDeleteKey(): + createKey( r"HKCU\Software\Python\A\B\C\D" ) + deleteKey( r"HKCU\Software\Python\A\B\C\D" ) + deleteKey( r"HKCU\Software\Python\A\B\C" ) + deleteKey( r"HKCU\Software\Python\A\B" ) + assert "A" in \ + openKey(r"HKCU\Software\Python").getSubkeys().keys() + openKey( r"HKCU\Software\Python" ).deleteSubkey( r"A" ) + assert "A" not in \ + openKey(r"HKCU\Software\Python").getSubkeys().keys() + +def testDeleteValue(): + key=createKey( r"HKCU\Software\Python\A" ) + key.setValue( "abcde", "fghij" ) + assert key.getValueData( "abcde" )=="fghij" + assert "abcde" in key.getValues().keys() + assert "fghij" in map( lambda x:x[1], key.getValues().values() ) + assert "abcde" in key.getValues().keys() + key.deleteValue( "abcde" ) + assert "abcde" not in key.getValues().keys() + assert "fghij" not in map( lambda x:x[1], key.getValues().values() ) + deleteKey( r"HKCU\Software\Python\A" ) + +def testCreateKey(): + key=createKey( r"HKCU\Software\Python\A" ) + assert openKey( r"HKCU\Software\Python").getSubkeys().has_key( "A" ) + deleteKey( r"HKCU\Software\Python\A" ) + assert not openKey( r"HKCU\Software\Python").getSubkeys().\ + has_key( "A" ) + key=openKey( r"HKCU\Software\Python" ).createSubkey( "A" ) + +def testOpenKeyWithFlags(): + assert openKey( r"HKCU\Software\Python", + flags["KEY_READ"]) + assert openKey( r"HKCU\Software\Python", + flags["KEY_ALL_ACCESS"]) + +def testGetSubkeys(): + keys=openKey( r"HKCU\Software" ).getSubkeys() + assert keys + index=0 + for i in keys: + index=index+1 + assert index==len( keys ) + +def testGetValueNameDataAndType(): pass + +def testGetSubkeyNames(): + subkeyNames=hives["HKLM"].getSubkeyNames() + assert len( subkeyNames )==len(hives["HKLM"].getSubkeys()) + for name in subkeyNames: + assert type( name )==type("") + +def testGetValueNames(): + valNames=hives["HKLM"].getValueNames() + assert len( valNames )==len(hives["HKLM"].getValues()) + for name in valNames: + assert type( name )==type("") + +def testRepr(): + assert repr(hives["HKCU"])==str(hives["HKCU"]) + +def testSetStringValue(): + hives["HKCU"].setValue( "Blah", "abc" ) + assert hives["HKCU"].getValueData( "Blah" )=="abc" + assert hives["HKCU"].getValues().has_key( "Blah" ) + del hives["HKCU"].getValues()[ "Blah" ] + assert not hives["HKCU"].getValues().has_key( "Blah" ) + +def testDeleteValue(): + hives["HKCU"].setValue( "Blah", "abc" ) + assert hives["HKCU"].getValues().has_key( "Blah" ) + del hives["HKCU"].getValues()[ "Blah" ] + assert not hives["HKCU"].getValues().has_key( "Blah" ) + hives["HKCU"].setValue( "Blah", "abc" ) + hives["HKCU"].deleteValue( "Blah" ) + assert not hives["HKCU"].getValues().has_key( "Blah" ) + +def testKeyDict_ClearKeys(): + createKey( "HKLM\\Software\\a\\b\\c\\d\\e" ) + createKey( "HKLM\\Software\\a\\b\\c\\d\\f" ) + createKey( "HKLM\\Software\\a\\b\\c\\d\\g" ) + createKey( "HKLM\\Software\\a\\b\\c\\d\\h" ) + createKey( "HKLM\\Software\\a\\b\\c\\d\\i" ) + key=openKey( "HKLM\\Software\\a\\b\\c\\d" ) + assert key.getSubkeys() + key.getSubkeys().clear() + assert not key.getSubkeys() + assert not openKey( "HKLM\\Software\\a\\b\\c\\d").getSubkeys() + deleteKey( "HKLM\\Software\\a\\b\\c\\d" ) + deleteKey( "HKLM\\Software\\a\\b\\c" ) + deleteKey( "HKLM\\Software\\a\\b" ) + deleteKey( "HKLM\\Software\\a" ) + +def testUnicodeKeyName(): pass + +def testUnicodeValueName(): pass + +def testGetValueDataFromEnum(): pass + +def testGetValueDataFromName(): pass + +def testGetBinaryData(): pass + + +def testSetIntValue(): + key=createKey( "HKLM\\Software\\a\\b") + key.setValue( "abcd", 5 ) + assert key.getValueData( "abcd" )==5 + assert key.getValues()[ "abcd" ][1]==5 + key.deleteValue( "abcd" ) + key.getValues()["abcd"]=5 + assert key.getValues()[ "abcd" ][1]==5 + key.deleteValue( "abcd" ) + key.getValues()["abcd"]=(5,regtypes["REG_DWORD"]) + assert key.getValues()[ "abcd" ][1]==5 + key.deleteValue( "abcd" ) + key.deleteKey( "HKLM\\Software\\a\\b") + key.deleteKey( "HKLM\\Software\\a") + +def testSetBinaryValue(): + key=createKey( "HKLM\\Software\\a\\b") + key.setValue( "abcd", array.array( 'c', "PPPPPPPPPPPPPPP") ) + key.setValue( "abcde", array.array( 'c', "PPPPPPPPPPPPPPP"), + regtypes["REG_BINARY"] ) + assert key.getValues()["abcd"]==key.getValues()["abcde"] + key.deleteKey( "HKLM\\Software\\a\\b") + key.deleteKey( "HKLM\\Software\\a") + +def testSetNone(): pass + +def testSetString(): pass + +def testSetExpandString(): pass + +def testSetBinaryData(): pass + +def testSetDword(): pass + +def testSetDwordBigEndian(): pass + +def testSetLink(): pass + +def testSetMultiSz(): pass + +def testSetResourceList(): pass + +def testSetFullResourceDescription(): pass + +def testSetResourceRequirementsList(): pass + + + +def testFlush(): pass + +def testSave(): pass + +def testLoad(): pass + + + + + +def testNoneType(): pass + +def testStringType(): pass + +def testExpandStringType(): pass + +def testDWordType(): pass + +def testDWordBigEndianType(): pass + +def testLinkType(): pass + +def testMultiStringType(): pass + +def testResourceLinkType(): pass + +def testResourceDescriptionType(): pass + +def testResourceRequirementsListType(): pass + + +def getSubkeysDict(): pass + +def testKeyDict_Get(): pass + +def testKeyDict_HasKey(): pass + +def testKeyDict_Keys(): pass + +def testKeyDict_Values(): pass + +def testKeyDict_Items(): pass + +def testKeyDict_Length(): pass + +def testKeyDict_Map(): pass + +def testKeyDict_GetItem(): pass + +def testKeyDict_DelItem(): pass + +def testRemote(): pass + +def testShortcuts(): pass + + + +def getValues(): pass + +def testValueDict_ClearKeys(): pass + +def testValueDict_Get(): pass + +def testValueDict_HasKey(): pass + +def testValueDict_Keys(): pass + +def testValueDict_Values(): pass + +def testValueDict_Items(): pass + +def testValueDict_Length(): pass + +def testValueDict_Map(): pass + +def testValueDict_GetItem(): pass + +def testValueDict_DelItem(): pass + +for name in globals().keys(): + if name[0:4]=="test": + func=globals()[ name ] + try: + func() + print "Test Passed: %s" % name + except Exception, e: + print "Test Failed: %s" % name + traceback.print_exc() + +j=[0]*len( regtypes ) + +k=0 + +def test1( basekey ): + global k + for (name, data, type) in basekey.getValues(): + j[type.intval]=j[type.intval]+1 + if j[type.intval]==1: + pass + #print "[[%s]] %s [%s] = %s "% (type.msname, name, basekey, value) + keys=basekey.getSubkeys() + index=0 + k=k+1 + if(k%2500)==0: + dump() + while 1: + try: + test1( keys[index] ) + index=index+1 + except IndexError: + break + print "Done", basekey, index + except (WindowsError, EnvironmentError): + index=index+1 + dumpfile.write( "Skipping %s %s"% (basekey, index)) + +def dump(dumpfile): + for i in range( len( j )): + dumpfile.write( "%s %s\n" %( i,j[i] )) + +def testRecursive(): + dumpfile=open( "foo.txt", "w" ) + start=time.time() + for hive in hives.values(): + dumpfile.write( "Hive: %s\n" % hive ) + test1( hive ) + dump(dumpfile) + print time.time()-start |