public void TestNewAddressUxOuts() { var uxs = new coin_UxOutArray(); makeUxArray(uxs, 6); var ux = uxs.getAt(1); ux.Body.Address = uxs.getAt(0).Body.Address; uxs.setAt(1, ux); ux = uxs.getAt(3); ux.Body.Address = uxs.getAt(2).Body.Address; uxs.setAt(3, ux); ux = uxs.getAt(4); ux.Body.Address = uxs.getAt(2).Body.Address; uxs.setAt(4, ux); var uxo = new_AddressUxOuts__HandlePtr(); var err = SKY_coin_NewAddressUxOuts(uxs, uxo); Assert.AreEqual(err, SKY_OK); var len = new_Gointp(); err = SKY_coin_AddressUxOuts_Length(uxo, len); Assert.AreEqual(err, SKY_OK); Assert.AreEqual(Gointp_value(len), 3); var uxa1 = new coin_UxOutArray(); var uxa2 = new coin_UxOutArray(); SKY_coin_AddressUxOuts_Get(uxo, uxs.getAt(0).Body.Address, uxa1); Assert.AreEqual(err, SKY_OK); uxa2.allocate(2); uxa2.setAt(1, uxs.getAt(4)); uxa2.setAt(0, uxs.getAt(0)); uxa2.setAt(1, uxs.getAt(4)); uxa2.setAt(1, uxs.getAt(1)); uxa2.setAt(1, uxs.getAt(4)); Assert.AreEqual(uxa1.isEqual(uxa2), 0); uxa2.setAt(1, uxs.getAt(4)); uxa1.release(); SKY_coin_AddressUxOuts_Get(uxo, uxs.getAt(3).Body.Address, uxa1); Assert.AreEqual(err, SKY_OK); uxa2.release(); uxa2.allocate(3); uxa2.setAt(0, uxs.getAt(2)); uxa2.setAt(1, uxs.getAt(3)); uxa2.setAt(1, uxs.getAt(4)); Assert.AreEqual(uxa1.isEqual(uxa2), 0); uxa1.release(); SKY_coin_AddressUxOuts_Get(uxo, uxs.getAt(5).Body.Address, uxa1); Assert.AreEqual(err, SKY_OK); uxa2.release(); uxa2.allocate(1); uxa2.setAt(0, uxs.getAt(5)); Assert.AreEqual(uxa1.isEqual(uxa2), 1); }
public void TestUxArraySub() { var uxa = new coin_UxOutArray(); var uxb = new coin_UxOutArray(); var uxc = new coin_UxOutArray(); var uxd = new coin_UxOutArray(); makeUxArray(uxa, 4); makeUxArray(uxb, 4); uxc.allocate(6); uxc.setAt(0, uxa.getAt(0)); uxc.setAt(1, uxa.getAt(1)); for (int i = 0; i < uxb.count; i++) { uxc.setAt(i + 2, uxb.getAt(i)); } uxc.setAt(6, uxa.getAt(1)); uxc.setAt(7, uxa.getAt(2)); var err = SKY_coin_UxArray_Sub(uxc, uxa, uxd); Assert.AreEqual(err, SKY_OK); Assert.AreEqual(uxd.count, uxb.count); Assert.AreEqual(uxd.isEqual(uxb), 1); err = SKY_coin_UxArray_Sub(uxc, uxb, uxd); Assert.AreEqual(err, SKY_OK); Assert.AreEqual(uxd.count, 2); var test = new coin_UxOutArray(); test.allocate(2); test.setAt(0, uxa.getAt(0)); test.setAt(1, uxa.getAt(1)); Assert.AreEqual(test.isEqual(uxd), 1); // No intersection err = SKY_coin_UxArray_Sub(uxa, uxb, uxd); Assert.AreEqual(err, SKY_OK); Assert.AreEqual(uxd.isEqual(uxa), 1); err = SKY_coin_UxArray_Sub(uxb, uxa, uxd); Assert.AreEqual(err, SKY_OK); Assert.AreEqual(uxd.isEqual(uxb), 1); }