github.com/go-ole/go-ole@v1.2.6/connect_windows_test.go (about)

     1  // +build windows
     2  
     3  package ole
     4  
     5  import (
     6  	"fmt"
     7  	"strings"
     8  	"testing"
     9  )
    10  
    11  func Example_quickbooks() {
    12  	var err error
    13  
    14  	connection := &Connection{nil}
    15  
    16  	err = connection.Initialize()
    17  	if err != nil {
    18  		return
    19  	}
    20  	defer connection.Uninitialize()
    21  
    22  	err = connection.Create("QBXMLRP2.RequestProcessor.1")
    23  	if err != nil {
    24  		if err.(*OleError).Code() == CO_E_CLASSSTRING {
    25  			return
    26  		}
    27  	}
    28  	defer connection.Release()
    29  
    30  	dispatch, err := connection.Dispatch()
    31  	if err != nil {
    32  		return
    33  	}
    34  	defer dispatch.Release()
    35  }
    36  
    37  func TestConnectHelperCallDispatch_QuickBooks(t *testing.T) {
    38  	var err error
    39  
    40  	connection := &Connection{nil}
    41  
    42  	err = connection.Initialize()
    43  	if err != nil {
    44  		t.Log(err)
    45  		t.FailNow()
    46  	}
    47  	defer connection.Uninitialize()
    48  
    49  	err = connection.Create("QBXMLRP2.RequestProcessor.1")
    50  	if err != nil {
    51  		if err.(*OleError).Code() == CO_E_CLASSSTRING {
    52  			return
    53  		}
    54  		t.Log(err)
    55  		t.FailNow()
    56  	}
    57  	defer connection.Release()
    58  
    59  	dispatch, err := connection.Dispatch()
    60  	if err != nil {
    61  		t.Log(err)
    62  		t.FailNow()
    63  	}
    64  	defer dispatch.Release()
    65  
    66  	var result *VARIANT
    67  
    68  	_, err = dispatch.Call("OpenConnection2", "", "Test Application 1", 1)
    69  	if err != nil {
    70  		t.Log(err)
    71  		t.FailNow()
    72  	}
    73  
    74  	result, err = dispatch.Call("BeginSession", "", 2)
    75  	if err != nil {
    76  		t.Log(err)
    77  		t.FailNow()
    78  	}
    79  
    80  	ticket := result.ToString()
    81  
    82  	_, err = dispatch.Call("EndSession", ticket)
    83  	if err != nil {
    84  		t.Log(err)
    85  		t.Fail()
    86  	}
    87  
    88  	_, err = dispatch.Call("CloseConnection")
    89  	if err != nil {
    90  		t.Log(err)
    91  		t.Fail()
    92  	}
    93  }
    94  
    95  func TestConnectHelperDispatchProperty_QuickBooks(t *testing.T) {
    96  	var err error
    97  
    98  	connection := &Connection{nil}
    99  
   100  	err = connection.Initialize()
   101  	if err != nil {
   102  		t.Log(err)
   103  		t.FailNow()
   104  	}
   105  	defer connection.Uninitialize()
   106  
   107  	err = connection.Create("QBXMLRP2.RequestProcessor.1")
   108  	if err != nil {
   109  		if err.(*OleError).Code() == CO_E_CLASSSTRING {
   110  			return
   111  		}
   112  		t.Log(err)
   113  		t.FailNow()
   114  	}
   115  	defer connection.Release()
   116  
   117  	dispatch, err := connection.Dispatch()
   118  	if err != nil {
   119  		t.Log(err)
   120  		t.FailNow()
   121  	}
   122  	defer dispatch.Release()
   123  
   124  	var result *VARIANT
   125  
   126  	_, err = dispatch.Call("OpenConnection2", "", "Test Application 1", 1)
   127  	if err != nil {
   128  		t.Log(err)
   129  		t.FailNow()
   130  	}
   131  
   132  	result, err = dispatch.Call("BeginSession", "", 2)
   133  	if err != nil {
   134  		t.Log(err)
   135  		t.FailNow()
   136  	}
   137  
   138  	ticket := result.ToString()
   139  
   140  	result, err = dispatch.Get("QBXMLVersionsForSession", ticket)
   141  	if err != nil {
   142  		t.Log(err)
   143  		t.FailNow()
   144  	}
   145  
   146  	conversion := result.ToArray()
   147  
   148  	totalElements, _ := conversion.TotalElements(0)
   149  	if totalElements != 13 {
   150  		t.Log(fmt.Sprintf("%d total elements does not equal 13\n", totalElements))
   151  		t.Fail()
   152  	}
   153  
   154  	versions := conversion.ToStringArray()
   155  	expectedVersionString := "1.0, 1.1, 2.0, 2.1, 3.0, 4.0, 4.1, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0"
   156  	versionString := strings.Join(versions, ", ")
   157  
   158  	if len(versions) != 13 {
   159  		t.Log(fmt.Sprintf("%s\n", versionString))
   160  		t.Fail()
   161  	}
   162  
   163  	if expectedVersionString != versionString {
   164  		t.Log(fmt.Sprintf("Expected: %s\nActual: %s", expectedVersionString, versionString))
   165  		t.Fail()
   166  	}
   167  
   168  	conversion.Release()
   169  
   170  	_, err = dispatch.Call("EndSession", ticket)
   171  	if err != nil {
   172  		t.Log(err)
   173  		t.Fail()
   174  	}
   175  
   176  	_, err = dispatch.Call("CloseConnection")
   177  	if err != nil {
   178  		t.Log(err)
   179  		t.Fail()
   180  	}
   181  }