blob: fcf5b71497577b417f7ecd0faf5e71c2afca9d38 [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()
}
}()
err := coInitialize()
if err != nil {
t.Error(err)
t.FailNow()
}
CoUninitialize()
}
func TestComPublicSetupAndShutDown(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Log(r)
t.Fail()
}
}()
err := CoInitialize(0)
if err != nil {
t.Error(err)
t.FailNow()
}
CoUninitialize()
}
func TestComPublicSetupAndShutDown_WithValue(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Log(r)
t.Fail()
}
}()
err := CoInitialize(5)
if err != nil {
t.Error(err)
t.FailNow()
}
CoUninitialize()
}
func TestComExSetupAndShutDown(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Log(r)
t.Fail()
}
}()
err := coInitializeEx(COINIT_MULTITHREADED)
if err != nil {
t.Error(err)
t.FailNow()
}
CoUninitialize()
}
func TestComPublicExSetupAndShutDown(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Log(r)
t.Fail()
}
}()
err := CoInitializeEx(0, COINIT_MULTITHREADED)
if err != nil {
t.Error(err)
t.FailNow()
}
CoUninitialize()
}
func TestComPublicExSetupAndShutDown_WithValue(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Log(r)
t.Fail()
}
}()
err := CoInitializeEx(5, COINIT_MULTITHREADED)
if err != nil {
t.Error(err)
t.FailNow()
}
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: %v", err)
}
switch vt := err.(type) {
case *OleError:
default:
t.Fatalf("should be *ole.OleError %t", vt)
}
}