github.com/remoteit/go-ole@v1.2.7/com_test.go (about) 1 // +build windows 2 3 package ole 4 5 import ( 6 "fmt" 7 "testing" 8 ) 9 10 func TestComSetupAndShutDown(t *testing.T) { 11 defer func() { 12 if r := recover(); r != nil { 13 t.Log(r) 14 t.Fail() 15 } 16 }() 17 18 err := coInitialize() 19 if err != nil { 20 t.Error(err) 21 t.FailNow() 22 } 23 24 CoUninitialize() 25 } 26 27 func TestComPublicSetupAndShutDown(t *testing.T) { 28 defer func() { 29 if r := recover(); r != nil { 30 t.Log(r) 31 t.Fail() 32 } 33 }() 34 35 err := CoInitialize(0) 36 if err != nil { 37 t.Error(err) 38 t.FailNow() 39 } 40 41 CoUninitialize() 42 } 43 44 func TestComPublicSetupAndShutDown_WithValue(t *testing.T) { 45 defer func() { 46 if r := recover(); r != nil { 47 t.Log(r) 48 t.Fail() 49 } 50 }() 51 52 err := CoInitialize(5) 53 if err != nil { 54 t.Error(err) 55 t.FailNow() 56 } 57 58 CoUninitialize() 59 } 60 61 func TestComExSetupAndShutDown(t *testing.T) { 62 defer func() { 63 if r := recover(); r != nil { 64 t.Log(r) 65 t.Fail() 66 } 67 }() 68 69 err := coInitializeEx(COINIT_MULTITHREADED) 70 if err != nil { 71 t.Error(err) 72 t.FailNow() 73 } 74 75 CoUninitialize() 76 } 77 78 func TestComPublicExSetupAndShutDown(t *testing.T) { 79 defer func() { 80 if r := recover(); r != nil { 81 t.Log(r) 82 t.Fail() 83 } 84 }() 85 86 err := CoInitializeEx(0, COINIT_MULTITHREADED) 87 if err != nil { 88 t.Error(err) 89 t.FailNow() 90 } 91 92 CoUninitialize() 93 } 94 95 func TestComPublicExSetupAndShutDown_WithValue(t *testing.T) { 96 defer func() { 97 if r := recover(); r != nil { 98 t.Log(r) 99 t.Fail() 100 } 101 }() 102 103 err := CoInitializeEx(5, COINIT_MULTITHREADED) 104 if err != nil { 105 t.Error(err) 106 t.FailNow() 107 } 108 109 CoUninitialize() 110 } 111 112 func TestClsidFromProgID_WindowsMediaNSSManager(t *testing.T) { 113 defer func() { 114 if r := recover(); r != nil { 115 t.Log(r) 116 t.Fail() 117 } 118 }() 119 120 expected := &GUID{0x92498132, 0x4D1A, 0x4297, [8]byte{0x9B, 0x78, 0x9E, 0x2E, 0x4B, 0xA9, 0x9C, 0x07}} 121 122 coInitialize() 123 defer CoUninitialize() 124 actual, err := CLSIDFromProgID("WMPNSSCI.NSSManager") 125 if err == nil { 126 if !IsEqualGUID(expected, actual) { 127 t.Log(err) 128 t.Log(fmt.Sprintf("Actual GUID: %+v\n", actual)) 129 t.Fail() 130 } 131 } 132 } 133 134 func TestClsidFromString_WindowsMediaNSSManager(t *testing.T) { 135 defer func() { 136 if r := recover(); r != nil { 137 t.Log(r) 138 t.Fail() 139 } 140 }() 141 142 expected := &GUID{0x92498132, 0x4D1A, 0x4297, [8]byte{0x9B, 0x78, 0x9E, 0x2E, 0x4B, 0xA9, 0x9C, 0x07}} 143 144 coInitialize() 145 defer CoUninitialize() 146 actual, err := CLSIDFromString("{92498132-4D1A-4297-9B78-9E2E4BA99C07}") 147 148 if !IsEqualGUID(expected, actual) { 149 t.Log(err) 150 t.Log(fmt.Sprintf("Actual GUID: %+v\n", actual)) 151 t.Fail() 152 } 153 } 154 155 func TestCreateInstance_WindowsMediaNSSManager(t *testing.T) { 156 defer func() { 157 if r := recover(); r != nil { 158 t.Log(r) 159 t.Fail() 160 } 161 }() 162 163 expected := &GUID{0x92498132, 0x4D1A, 0x4297, [8]byte{0x9B, 0x78, 0x9E, 0x2E, 0x4B, 0xA9, 0x9C, 0x07}} 164 165 coInitialize() 166 defer CoUninitialize() 167 actual, err := CLSIDFromProgID("WMPNSSCI.NSSManager") 168 169 if err == nil { 170 if !IsEqualGUID(expected, actual) { 171 t.Log(err) 172 t.Log(fmt.Sprintf("Actual GUID: %+v\n", actual)) 173 t.Fail() 174 } 175 176 unknown, err := CreateInstance(actual, IID_IUnknown) 177 if err != nil { 178 t.Log(err) 179 t.Fail() 180 } 181 unknown.Release() 182 } 183 } 184 185 func TestError(t *testing.T) { 186 defer func() { 187 if r := recover(); r != nil { 188 t.Log(r) 189 t.Fail() 190 } 191 }() 192 193 coInitialize() 194 defer CoUninitialize() 195 _, err := CLSIDFromProgID("INTERFACE-NOT-FOUND") 196 if err == nil { 197 t.Fatalf("should be fail: %v", err) 198 } 199 200 switch vt := err.(type) { 201 case *OleError: 202 default: 203 t.Fatalf("should be *ole.OleError %t", vt) 204 } 205 }