MCPcopy Create free account
hub / github.com/enthought/comtypes / test

Method test

comtypes/test/test_QueryService.py:18–57  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

16
17class TestCase(unittest.TestCase):
18 def test(self):
19 doc = CreateObject(mshtml.HTMLDocument, interface=mshtml.IHTMLDocument2)
20 doc.designMode = "On"
21 doc.write("<html><body><div id='test'>Hello</div></body></html>")
22 doc.close()
23 while doc.readyState != "complete":
24 time.sleep(0.01)
25 sp = doc.QueryInterface(comtypes.IServiceProvider)
26 # This behavior is described in Microsoft documentation:
27 # https://learn.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa704048(v=vs.85)
28 es = sp.QueryService(SID_SHTMLEditServices, mshtml.IHTMLEditServices)
29 self.assertIsInstance(es, POINTER(mshtml.IHTMLEditServices))
30 mc = doc.QueryInterface(mshtml.IMarkupContainer)
31 ss = es.GetSelectionServices(mc)
32 # QueryInterface for `IHTMLDocument3` to access `getElementById`.
33 element = doc.QueryInterface(mshtml.IHTMLDocument3).getElementById("test")
34 self.assertEqual(element.innerHTML, "Hello")
35 # MarkupPointer related tests:
36 ms = doc.QueryInterface(mshtml.IMarkupServices)
37 p_start = ms.CreateMarkupPointer()
38 p_end = ms.CreateMarkupPointer()
39 # QueryInterface for `IHTMLBodyElement` to access `createTextRange`.
40 rng = doc.body.QueryInterface(mshtml.IHTMLBodyElement).createTextRange()
41 rng.moveToElementText(element)
42 ms.MovePointersToRange(rng, p_start, p_end)
43 self.assertTrue(p_start.IsLeftOf(p_end))
44 self.assertTrue(p_end.IsRightOf(p_start))
45 self.assertFalse(p_start.IsEqualTo(p_end))
46 seg = ss.AddSegment(p_start, p_end)
47 q_start = ms.CreateMarkupPointer()
48 q_end = ms.CreateMarkupPointer()
49 self.assertFalse(p_start.IsEqualTo(q_start))
50 self.assertFalse(p_end.IsEqualTo(q_end))
51 seg.GetPointers(q_start, q_end)
52 self.assertTrue(p_start.IsEqualTo(q_start))
53 self.assertTrue(p_end.IsEqualTo(q_end))
54 ss.RemoveSegment(seg)
55 # Verify state changes of `p_start` and `p_end`.
56 p_start.MoveToPointer(p_end)
57 self.assertTrue(p_start.IsEqualTo(p_end))
58
59
60if __name__ == "__main__":

Callers

nothing calls this directly

Calls 4

CreateObjectFunction · 0.90
QueryServiceMethod · 0.80
writeMethod · 0.45
QueryInterfaceMethod · 0.45

Tested by

no test coverage detected