From 4caa408721750fbcbcf863f4472191533470c78c Mon Sep 17 00:00:00 2001
From: "SND\\EreTIk_cp" <SND\EreTIk_cp@9b283d60-5439-405e-af05-b73fd8c4d996>
Date: Fri, 24 Apr 2015 09:50:50 +0000
Subject: [PATCH] [0.3.x] restored tests of synthetic symbols

git-svn-id: https://pykd.svn.codeplex.com/svn@90487 9b283d60-5439-405e-af05-b73fd8c4d996
---
 pykd/dllmain.cpp           | 20 +++++-----
 test/scripts/pykdtest.py   |  4 +-
 test/scripts/synsymtest.py | 75 ++++++--------------------------------
 3 files changed, 25 insertions(+), 74 deletions(-)

diff --git a/pykd/dllmain.cpp b/pykd/dllmain.cpp
index d546fe0..84dceb9 100644
--- a/pykd/dllmain.cpp
+++ b/pykd/dllmain.cpp
@@ -6,22 +6,22 @@
 BOOL APIENTRY DllMain( HMODULE hModule,
                        DWORD  ul_reason_for_call,
                        LPVOID lpReserved
-					 )
+)
 {
-	switch (ul_reason_for_call)
-	{
+    switch (ul_reason_for_call)
+    {
     case DLL_PROCESS_ATTACH:
         break;
 
-	case DLL_THREAD_ATTACH:
-	case DLL_THREAD_DETACH:
+    case DLL_THREAD_ATTACH:
+    case DLL_THREAD_DETACH:
         break;
 
-	case DLL_PROCESS_DETACH:
-        int  a;
+    case DLL_PROCESS_DETACH:
+        volatile int a;
         a = 10;
-		break;
-	}
-	return TRUE;
+        break;
+    }
+    return TRUE;
 }
 
diff --git a/test/scripts/pykdtest.py b/test/scripts/pykdtest.py
index 7409f62..cef675b 100644
--- a/test/scripts/pykdtest.py
+++ b/test/scripts/pykdtest.py
@@ -26,6 +26,7 @@ import mspdbtest
 import excepttest
 import targetprocess
 import ehloadtest
+import synsymtest
 
 pykd.initialize()
 
@@ -55,6 +56,7 @@ def getTestSuite( singleName = "" ):
                 unittest.TestLoader().loadTestsFromTestCase( typedvar.TypedVarTest ),
                 #unittest.TestLoader().loadTestsFromTestCase( regtest.CpuRegTest ),
                 unittest.TestLoader().loadTestsFromTestCase( customtypestest.CustomTypesTest ),
+                unittest.TestLoader().loadTestsFromTestCase( synsymtest.SynSymTest ),
                 # ^^^
                 unittest.TestLoader().loadTestsFromTestCase( TerminateProcessTest ),
 
@@ -83,5 +85,5 @@ if __name__ == "__main__":
 
     unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run( getTestSuite() )
 
-    #raw_input("Press <ENTER>...")
+    # raw_input("Press <ENTER>...")
 
diff --git a/test/scripts/synsymtest.py b/test/scripts/synsymtest.py
index ee54df0..be4d0a8 100644
--- a/test/scripts/synsymtest.py
+++ b/test/scripts/synsymtest.py
@@ -9,73 +9,22 @@ class SynSymTest(unittest.TestCase):
 
     def testAdd(self):
         """Add new synthetic symbol"""
-        pykd.addSynSymbol(
-            target.module.offset("FuncWithName0")-1, 1, "synSym1")
-        self.assertEqual(
-            target.module.offset("FuncWithName0")-1,
-            target.module.offset("synSym1"))
+        _addr = target.module.offset("FuncTestClass::staticMethod") - 1
+
+        pykd.addSyntheticSymbol(_addr, 1, "synSym1")
+        self.assertEqual(target.module.synSym1, _addr)
+
+        self.assertRaises( pykd.DbgException, pykd.addSyntheticSymbol, _addr, 1, "synSym1" )
 
     def testDel(self):
         """Remove synthetic symbol"""
-        pykd.addSynSymbol(
-            target.module.offset("FuncWithName0")-2, 1, "synSym2")
-        self.assertEqual(
-            pykd.delSynSymbol( target.module.offset("synSym2") ), 1 )
+        _addr = target.module.offset("FuncTestClass::staticMethod") - 2
 
-        exceptionOccurred = True
-        try:
-            target.module.rva("synSym2")
-            exceptionOccurred = False
-        except pykd.BaseException:
-            pass
-        self.assertTrue(exceptionOccurred)
+        _synsym = pykd.addSyntheticSymbol(_addr, 1, "synSym2")
+        self.assertEqual(target.module.synSym2, _addr)
 
-    def testDelAll(self):
-        """Remove all synthetic symbols"""
-        pykd.addSynSymbol(
-            target.module.offset("FuncWithName0")-3, 1, "synSym3")
-        pykd.delAllSynSymbols()
+        pykd.removeSyntheticSymbol(_synsym)
 
-        exceptionOccurred = True
-        try:
-            target.module.rva("synSym3")
-            exceptionOccurred = False
-        except pykd.BaseException:
-            pass
-        self.assertTrue(exceptionOccurred)
+        self.assertRaises( pykd.DbgException, target.module.offset, "synSym2" )
 
-    def testDelByMask(self):
-        """Remove synthetic symbol by mask"""
-        pykd.addSynSymbol(
-            target.module.offset("FuncWithName0")-4, 1, "synSym4")
-        self.assertTrue( pykd.delSynSymbolsMask( "*", "synSym4" ) >= 1 )
-
-        exceptionOccurred = True
-        try:
-            target.module.rva("synSym4")
-            exceptionOccurred = False
-        except pykd.BaseException:
-            pass
-        self.assertTrue(exceptionOccurred)
-
-    def testReload(self):
-        """Restore synthetic symbols after reload module symbols"""
-        pykd.addSynSymbol(
-            target.module.offset("FuncWithName0")-5, 1, "synSym5")
-        target.module.reload()
-        self.assertEqual(
-            target.module.offset("FuncWithName0")-5,
-            target.module.offset("synSym5"))
-
-    def testAddSynSymbolException(self):
-        """Test of AddSynSymbolException"""
-        pykd.addSynSymbol(
-            target.module.offset("FuncWithName0")-6, 1, "synSym6")
-
-        exceptionOccurred = False
-        try:
-            pykd.addSynSymbol(
-                target.module.offset("FuncWithName0")-6, 1, "synSym7")
-        except pykd.AddSynSymbolException:
-            exceptionOccurred = True
-        self.assertTrue(exceptionOccurred)
+        self.assertRaises( pykd.DbgException, pykd.removeSyntheticSymbol, _synsym )