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 }