pykd

Форк
0
/
localstest.py 
48 строк · 1.9 Кб
1
"""Local variables tests"""
2

3
import unittest
4
import target
5
import pykd
6
import testutils
7

8

9
def testEnumWindowsProc1Locals(testCase, locals):
10
    testCase.assertNotEqual( 0, locals["hWindow"] )
11
    DataIsParam = 3
12
    testCase.assertEqual( DataIsParam, locals["hWindow"].dataKind() )
13

14
    testCase.assertEqual( 6, locals["lParam"] )
15
    testCase.assertEqual( DataIsParam, locals["lParam"].dataKind() )
16

17
    DataIsLocal = 1
18
    testCase.assertNotEqual( 0, locals["dwProccessId"] )
19
    testCase.assertEqual( DataIsLocal, locals["dwProccessId"].dataKind() )
20

21
    DataIsStaticLocal = 2
22
    testCase.assertNotEqual( 0, locals["staticVar"] )
23
    testCase.assertEqual( DataIsStaticLocal, locals["staticVar"].dataKind() )
24

25
    testCase.assertEqual( locals["dwProccessId"] + 1, locals["staticVar"] )
26
    
27

28
class LocalVarsTest(unittest.TestCase):
29
    def testLocalVariable(self):
30
        """Start new process and test local variables"""
31
        _locProcessId = pykd.startProcess( target.appPath + " -testEnumWindows" )
32
        with testutils.ContextCallIt( testutils.KillProcess(_locProcessId) ) as killStartedProcess :
33
            pykd.go() # initial breakpoint -> wmain
34
            pykd.go() # wmain -> targetapp!EnumWindowsProc1
35

36
            testEnumWindowsProc1Locals(self, pykd.getLocals())
37

38
            pykd.go() # targetapp!EnumWindowsProc1 -> targetapp!functionCalledFromEnumWindowsProc1
39
            testEnumWindowsProc1Locals(self, pykd.getStack()[1].locals )
40

41
            pykd.go() # targetapp!EnumWindowsProc1 -> targetapp!EnumWindowsProc2
42
            locals = pykd.getLocals()
43
            self.assertEqual( len(locals), 2 )
44
            self.assertTrue( locals[0] == 7 or locals[1] == 7 )
45
            
46
            funcParams = pykd.getParams()
47
            self.assertEqual( len(funcParams), 2 )
48
            self.assertTrue( funcParams[0] == 7 or funcParams[1] == 7 )
49
            
50

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.