@@ -1417,3 +1417,246 @@ func TestPropertyTypesIntConversion(t *testing.T) {
1417
1417
assert .Equal (t , float64 (0 ), gotDoubleUnsetPropValue )
1418
1418
1419
1419
}
1420
+
1421
+ /*
1422
+ * Test the conversion between different int message properties and other data types.
1423
+ */
1424
+ func TestPropertyTypesBoolConversion (t * testing.T ) {
1425
+
1426
+ // Loads CF parameters from connection_info.json and applicationApiKey.json in the Downloads directory
1427
+ cf , cfErr := mqjms .CreateConnectionFactoryFromDefaultJSONFiles ()
1428
+ assert .Nil (t , cfErr )
1429
+
1430
+ // Creates a connection to the queue manager, using defer to close it automatically
1431
+ // at the end of the function (if it was created successfully)
1432
+ context , ctxErr := cf .CreateContext ()
1433
+ assert .Nil (t , ctxErr )
1434
+ if context != nil {
1435
+ defer context .Close ()
1436
+ }
1437
+
1438
+ msg := context .CreateTextMessage ()
1439
+
1440
+ // Set up some different int properties
1441
+ truePropName := "intOne"
1442
+ trueValue := true
1443
+ falsePropName := "intZero"
1444
+ falseValue := false
1445
+
1446
+ msg .SetBooleanProperty (truePropName , trueValue )
1447
+ msg .SetBooleanProperty (falsePropName , falseValue )
1448
+
1449
+ // Set up objects for send/receive
1450
+ queue := context .CreateQueue ("DEV.QUEUE.1" )
1451
+ consumer , errCons := context .CreateConsumer (queue )
1452
+ if consumer != nil {
1453
+ defer consumer .Close ()
1454
+ }
1455
+ assert .Nil (t , errCons )
1456
+
1457
+ // Now send the message and get it back again, to check that it roundtripped.
1458
+ errSend := context .CreateProducer ().SetTimeToLive (10000 ).Send (queue , msg )
1459
+ assert .Nil (t , errSend )
1460
+
1461
+ rcvMsg , errRvc := consumer .ReceiveNoWait ()
1462
+ assert .Nil (t , errRvc )
1463
+ assert .NotNil (t , rcvMsg )
1464
+
1465
+ // Check bool properties were set correctly
1466
+ gotTrueValue , gotTrueErr := rcvMsg .GetBooleanProperty (truePropName )
1467
+ gotFalseValue , gotFalseErr := rcvMsg .GetBooleanProperty (falsePropName )
1468
+ assert .Nil (t , gotTrueErr )
1469
+ assert .Nil (t , gotFalseErr )
1470
+ assert .Equal (t , trueValue , gotTrueValue )
1471
+ assert .Equal (t , falseValue , gotFalseValue )
1472
+
1473
+ // Convert back as string
1474
+ gotStrTrueValue , gotTrueErr := rcvMsg .GetStringProperty (truePropName )
1475
+ gotStrFalseValue , gotFalseErr := rcvMsg .GetStringProperty (falsePropName )
1476
+ assert .Nil (t , gotTrueErr )
1477
+ assert .Nil (t , gotFalseErr )
1478
+ assert .Equal (t , "true" , * gotStrTrueValue )
1479
+ assert .Equal (t , "false" , * gotStrFalseValue )
1480
+
1481
+ // Convert back as int
1482
+ gotIntTrueValue , gotTrueErr := rcvMsg .GetIntProperty (truePropName )
1483
+ gotIntFalseValue , gotFalseErr := rcvMsg .GetIntProperty (falsePropName )
1484
+ assert .Nil (t , gotTrueErr )
1485
+ assert .Nil (t , gotFalseErr )
1486
+ assert .Equal (t , 1 , gotIntTrueValue )
1487
+ assert .Equal (t , 0 , gotIntFalseValue )
1488
+
1489
+ // Convert back as double
1490
+ gotDoubleTrueValue , gotTrueErr := rcvMsg .GetDoubleProperty (truePropName )
1491
+ gotDoubleFalseValue , gotFalseErr := rcvMsg .GetDoubleProperty (falsePropName )
1492
+ assert .Nil (t , gotTrueErr )
1493
+ assert .Nil (t , gotFalseErr )
1494
+ assert .Equal (t , float64 (1 ), gotDoubleTrueValue )
1495
+ assert .Equal (t , float64 (0 ), gotDoubleFalseValue )
1496
+
1497
+ }
1498
+
1499
+ /*
1500
+ * Test the conversion between different int message properties and other data types.
1501
+ */
1502
+ func TestPropertyTypesDoubleConversion (t * testing.T ) {
1503
+
1504
+ // Loads CF parameters from connection_info.json and applicationApiKey.json in the Downloads directory
1505
+ cf , cfErr := mqjms .CreateConnectionFactoryFromDefaultJSONFiles ()
1506
+ assert .Nil (t , cfErr )
1507
+
1508
+ // Creates a connection to the queue manager, using defer to close it automatically
1509
+ // at the end of the function (if it was created successfully)
1510
+ context , ctxErr := cf .CreateContext ()
1511
+ assert .Nil (t , ctxErr )
1512
+ if context != nil {
1513
+ defer context .Close ()
1514
+ }
1515
+
1516
+ msg := context .CreateTextMessage ()
1517
+
1518
+ unsetPropName := "thisPropertyIsNotSet"
1519
+
1520
+ // Set up some different int properties
1521
+ doubleOnePropName := "intOne"
1522
+ doubleOneValue := float64 (1 )
1523
+ doubleZeroPropName := "intZero"
1524
+ doubleZeroValue := float64 (0 )
1525
+ doubleMinusOnePropName := "intMinusOne"
1526
+ doubleMinusOneValue := float64 (- 1 )
1527
+
1528
+ doubleLargePosPropName := "largePositive"
1529
+ doubleLargePosValue := float64 (48632675 )
1530
+ doubleLargeNegPropName := "largeNegative"
1531
+ doubleLargeNegValue := float64 (- 3789753467 )
1532
+
1533
+ doubleLargeDecimalPropName := "largePositiveDecimal"
1534
+ doubleLargeDecimalValue := float64 (3867493.68473625 )
1535
+ doubleLargeNegativeDecimalPropName := "largeNegativeDecimal"
1536
+ doubleLargeNegativeDecimalValue := float64 (- 87654335674.383656 )
1537
+
1538
+ msg .SetDoubleProperty (doubleOnePropName , doubleOneValue )
1539
+ msg .SetDoubleProperty (doubleZeroPropName , doubleZeroValue )
1540
+ msg .SetDoubleProperty (doubleMinusOnePropName , doubleMinusOneValue )
1541
+ msg .SetDoubleProperty (doubleLargePosPropName , doubleLargePosValue )
1542
+ msg .SetDoubleProperty (doubleLargeNegPropName , doubleLargeNegValue )
1543
+ msg .SetDoubleProperty (doubleLargeDecimalPropName , doubleLargeDecimalValue )
1544
+ msg .SetDoubleProperty (doubleLargeNegativeDecimalPropName , doubleLargeNegativeDecimalValue )
1545
+
1546
+ // Set up objects for send/receive
1547
+ queue := context .CreateQueue ("DEV.QUEUE.1" )
1548
+ consumer , errCons := context .CreateConsumer (queue )
1549
+ if consumer != nil {
1550
+ defer consumer .Close ()
1551
+ }
1552
+ assert .Nil (t , errCons )
1553
+
1554
+ // Now send the message and get it back again, to check that it roundtripped.
1555
+ errSend := context .CreateProducer ().SetTimeToLive (10000 ).Send (queue , msg )
1556
+ assert .Nil (t , errSend )
1557
+
1558
+ rcvMsg , errRvc := consumer .ReceiveNoWait ()
1559
+ assert .Nil (t , errRvc )
1560
+ assert .NotNil (t , rcvMsg )
1561
+
1562
+ // Check double properties were set correctly
1563
+ gotDoubleOneValue , gotOneErr := rcvMsg .GetDoubleProperty (doubleOnePropName )
1564
+ gotDoubleZeroValue , gotZeroErr := rcvMsg .GetDoubleProperty (doubleZeroPropName )
1565
+ gotDoubleMinusOneValue , gotMinusOneErr := rcvMsg .GetDoubleProperty (doubleMinusOnePropName )
1566
+ gotDoubleLargePosValue , gotLargePosErr := rcvMsg .GetDoubleProperty (doubleLargePosPropName )
1567
+ gotDoubleLargeNegValue , gotLargeNegErr := rcvMsg .GetDoubleProperty (doubleLargeNegPropName )
1568
+ gotDoubleLargePosDecimalValue , gotLargeDecPosErr := rcvMsg .GetDoubleProperty (doubleLargeDecimalPropName )
1569
+ gotDoubleLargeNegDecimalValue , gotLargeDecNegErr := rcvMsg .GetDoubleProperty (doubleLargeNegativeDecimalPropName )
1570
+ gotDoubleUnsetPropValue , gotUnsetErr := rcvMsg .GetDoubleProperty (unsetPropName )
1571
+ assert .Nil (t , gotOneErr )
1572
+ assert .Nil (t , gotZeroErr )
1573
+ assert .Nil (t , gotMinusOneErr )
1574
+ assert .Nil (t , gotLargePosErr )
1575
+ assert .Nil (t , gotLargeNegErr )
1576
+ assert .Nil (t , gotLargeDecPosErr )
1577
+ assert .Nil (t , gotLargeDecNegErr )
1578
+ assert .Nil (t , gotUnsetErr )
1579
+ assert .Equal (t , float64 (1 ), gotDoubleOneValue )
1580
+ assert .Equal (t , float64 (0 ), gotDoubleZeroValue )
1581
+ assert .Equal (t , float64 (- 1 ), gotDoubleMinusOneValue )
1582
+ assert .Equal (t , float64 (48632675 ), gotDoubleLargePosValue )
1583
+ assert .Equal (t , float64 (- 3789753467 ), gotDoubleLargeNegValue )
1584
+ assert .Equal (t , float64 (3867493.68473625 ), gotDoubleLargePosDecimalValue )
1585
+ assert .Equal (t , float64 (- 87654335674.383656 ), gotDoubleLargeNegDecimalValue )
1586
+ assert .Equal (t , float64 (0 ), gotDoubleUnsetPropValue )
1587
+
1588
+ // Convert back as int
1589
+ gotIntOneValue , gotOneErr := rcvMsg .GetIntProperty (doubleOnePropName )
1590
+ gotIntZeroValue , gotZeroErr := rcvMsg .GetIntProperty (doubleZeroPropName )
1591
+ gotIntMinusOneValue , gotMinusOneErr := rcvMsg .GetIntProperty (doubleMinusOnePropName )
1592
+ gotIntLargePosValue , gotLargePosErr := rcvMsg .GetIntProperty (doubleLargePosPropName )
1593
+ gotIntLargeNegValue , gotLargeNegErr := rcvMsg .GetIntProperty (doubleLargeNegPropName )
1594
+ gotIntLargePosDecimalValue , gotLargeDecPosErr := rcvMsg .GetIntProperty (doubleLargeDecimalPropName )
1595
+ gotIntLargeNegDecimalValue , gotLargeDecNegErr := rcvMsg .GetIntProperty (doubleLargeNegativeDecimalPropName )
1596
+ gotIntUnsetPropValue , gotUnsetErr := rcvMsg .GetIntProperty (unsetPropName )
1597
+ assert .Nil (t , gotOneErr )
1598
+ assert .Nil (t , gotZeroErr )
1599
+ assert .Nil (t , gotMinusOneErr )
1600
+ assert .Nil (t , gotLargePosErr )
1601
+ assert .Nil (t , gotLargeNegErr )
1602
+ assert .Nil (t , gotLargeDecPosErr )
1603
+ assert .Nil (t , gotLargeDecNegErr )
1604
+ assert .Nil (t , gotUnsetErr )
1605
+ assert .Equal (t , 1 , gotIntOneValue )
1606
+ assert .Equal (t , 0 , gotIntZeroValue )
1607
+ assert .Equal (t , - 1 , gotIntMinusOneValue )
1608
+ assert .Equal (t , 48632675 , gotIntLargePosValue )
1609
+ assert .Equal (t , - 3789753467 , gotIntLargeNegValue )
1610
+ assert .Equal (t , 3867494 , gotIntLargePosDecimalValue )
1611
+ assert .Equal (t , - 87654335674 , gotIntLargeNegDecimalValue )
1612
+ assert .Equal (t , 0 , gotIntUnsetPropValue )
1613
+
1614
+ // Convert back as string
1615
+ gotStrOneValue , gotOneErr := rcvMsg .GetStringProperty (doubleOnePropName )
1616
+ gotStrZeroValue , gotZeroErr := rcvMsg .GetStringProperty (doubleZeroPropName )
1617
+ gotStrMinusOneValue , gotMinusOneErr := rcvMsg .GetStringProperty (doubleMinusOnePropName )
1618
+ gotStrLargePosValue , gotLargePosErr := rcvMsg .GetStringProperty (doubleLargePosPropName )
1619
+ gotStrLargeNegValue , gotLargeNegErr := rcvMsg .GetStringProperty (doubleLargeNegPropName )
1620
+ gotStrLargePosDecimalValue , gotLargeDecPosErr := rcvMsg .GetStringProperty (doubleLargeDecimalPropName )
1621
+ gotStrLargeNegDecimalValue , gotLargeDecNegErr := rcvMsg .GetStringProperty (doubleLargeNegativeDecimalPropName )
1622
+ assert .Nil (t , gotOneErr )
1623
+ assert .Nil (t , gotZeroErr )
1624
+ assert .Nil (t , gotMinusOneErr )
1625
+ assert .Nil (t , gotLargePosErr )
1626
+ assert .Nil (t , gotLargeNegErr )
1627
+ assert .Nil (t , gotLargeDecPosErr )
1628
+ assert .Nil (t , gotLargeDecNegErr )
1629
+ assert .Nil (t , gotUnsetErr )
1630
+ assert .Equal (t , "1" , * gotStrOneValue )
1631
+ assert .Equal (t , "0" , * gotStrZeroValue )
1632
+ assert .Equal (t , "-1" , * gotStrMinusOneValue )
1633
+ assert .Equal (t , "4.8632675e+07" , * gotStrLargePosValue )
1634
+ assert .Equal (t , "-3.789753467e+09" , * gotStrLargeNegValue )
1635
+ assert .Equal (t , "3.86749368473625e+06" , * gotStrLargePosDecimalValue )
1636
+ assert .Equal (t , "-8.765433567438365e+10" , * gotStrLargeNegDecimalValue )
1637
+
1638
+ // Convert back as bool
1639
+ gotBoolOneValue , gotOneErr := rcvMsg .GetBooleanProperty (doubleOnePropName )
1640
+ gotBoolZeroValue , gotZeroErr := rcvMsg .GetBooleanProperty (doubleZeroPropName )
1641
+ gotBoolMinusOneValue , gotMinusOneErr := rcvMsg .GetBooleanProperty (doubleMinusOnePropName )
1642
+ gotBoolLargePosValue , gotLargePosErr := rcvMsg .GetBooleanProperty (doubleLargePosPropName )
1643
+ gotBoolLargeNegValue , gotLargeNegErr := rcvMsg .GetBooleanProperty (doubleLargeNegPropName )
1644
+ gotBoolLargePosDecimalValue , gotLargeDecPosErr := rcvMsg .GetBooleanProperty (doubleLargeDecimalPropName )
1645
+ gotBoolLargeNegDecimalValue , gotLargeDecNegErr := rcvMsg .GetBooleanProperty (doubleLargeNegativeDecimalPropName )
1646
+ assert .Nil (t , gotOneErr )
1647
+ assert .Nil (t , gotZeroErr )
1648
+ assert .Nil (t , gotMinusOneErr )
1649
+ assert .Nil (t , gotLargePosErr )
1650
+ assert .Nil (t , gotLargeNegErr )
1651
+ assert .Nil (t , gotLargeDecPosErr )
1652
+ assert .Nil (t , gotLargeDecNegErr )
1653
+ assert .Nil (t , gotUnsetErr )
1654
+ assert .Equal (t , true , gotBoolOneValue )
1655
+ assert .Equal (t , false , gotBoolZeroValue )
1656
+ assert .Equal (t , false , gotBoolMinusOneValue )
1657
+ assert .Equal (t , false , gotBoolLargePosValue )
1658
+ assert .Equal (t , false , gotBoolLargeNegValue )
1659
+ assert .Equal (t , false , gotBoolLargePosDecimalValue )
1660
+ assert .Equal (t , false , gotBoolLargeNegDecimalValue )
1661
+
1662
+ }
0 commit comments