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  }