blob: 150438923f2ac630a1967ee1115e0305e7594663 [file] [log] [blame]
// +build windows
package ole
import (
"fmt"
"testing"
)
func TestComSetupAndShutDown(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Log(r)
t.Fail()
}
}()
coInitialize()
CoUninitialize()
}
func TestComPublicSetupAndShutDown(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Log(r)
t.Fail()
}
}()
CoInitialize(0)
CoUninitialize()
}
func TestComPublicSetupAndShutDown_WithValue(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Log(r)
t.Fail()
}
}()
CoInitialize(5)
CoUninitialize()
}
func TestComExSetupAndShutDown(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Log(r)
t.Fail()
}
}()
coInitializeEx(COINIT_MULTITHREADED)
CoUninitialize()
}
func TestComPublicExSetupAndShutDown(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Log(r)
t.Fail()
}
}()
CoInitializeEx(0, COINIT_MULTITHREADED)
CoUninitialize()
}
func TestComPublicExSetupAndShutDown_WithValue(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Log(r)
t.Fail()
}
}()
CoInitializeEx(5, COINIT_MULTITHREADED)
CoUninitialize()
}
func TestClsidFromProgID_WindowsMediaNSSManager(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Log(r)
t.Fail()
}
}()
expected := &GUID{0x92498132, 0x4D1A, 0x4297, [8]byte{0x9B, 0x78, 0x9E, 0x2E, 0x4B, 0xA9, 0x9C, 0x07}}
coInitialize()
defer CoUninitialize()
actual, err := CLSIDFromProgID("WMPNSSCI.NSSManager")
if err == nil {
if !IsEqualGUID(expected, actual) {
t.Log(err)
t.Log(fmt.Sprintf("Actual GUID: %+v\n", actual))
t.Fail()
}
}
}
func TestClsidFromString_WindowsMediaNSSManager(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Log(r)
t.Fail()
}
}()
expected := &GUID{0x92498132, 0x4D1A, 0x4297, [8]byte{0x9B, 0x78, 0x9E, 0x2E, 0x4B, 0xA9, 0x9C, 0x07}}
coInitialize()
defer CoUninitialize()
actual, err := CLSIDFromString("{92498132-4D1A-4297-9B78-9E2E4BA99C07}")
if !IsEqualGUID(expected, actual) {
t.Log(err)
t.Log(fmt.Sprintf("Actual GUID: %+v\n", actual))
t.Fail()
}
}
func TestCreateInstance_WindowsMediaNSSManager(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Log(r)
t.Fail()
}
}()
expected := &GUID{0x92498132, 0x4D1A, 0x4297, [8]byte{0x9B, 0x78, 0x9E, 0x2E, 0x4B, 0xA9, 0x9C, 0x07}}
coInitialize()
defer CoUninitialize()
actual, err := CLSIDFromProgID("WMPNSSCI.NSSManager")
if err == nil {
if !IsEqualGUID(expected, actual) {
t.Log(err)
t.Log(fmt.Sprintf("Actual GUID: %+v\n", actual))
t.Fail()
}
unknown, err := CreateInstance(actual, IID_IUnknown)
if err != nil {
t.Log(err)
t.Fail()
}
unknown.Release()
}
}
func TestError(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Log(r)
t.Fail()
}
}()
coInitialize()
defer CoUninitialize()
_, err := CLSIDFromProgID("INTERFACE-NOT-FOUND")
if err == nil {
t.Fatalf("should be fail", err)
}
switch vt := err.(type) {
case *OleError:
default:
t.Fatalf("should be *ole.OleError %t", vt)
}
}