Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions TonSdk.Core/src/boc/BOC.cs
Original file line number Diff line number Diff line change
Expand Up @@ -277,8 +277,9 @@ public static Bits SerializeBoc(
}

var dataBits = dataBuilder.Build();
var offsetBytes = Math.Max((dataBits.Length.bitLength() + 7) / 8, 1);

var dataBytesSize = Math.Max((dataBits.Length + 7) / 8, 1) ;
var offsetBytes = Math.Max((dataBytesSize.bitLength() + 7) / 8, 1);

/*
serialized_boc#b5ee9c72 has_idx:(## 1) has_crc32c:(## 1)
has_cache_bits:(## 1) flags:(## 2) { flags = 0 }
Expand Down
54 changes: 51 additions & 3 deletions TonSdk.Core/test/boc/Cell.test.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,56 @@
using TonSdk.Core.Boc;

namespace TonSdk.Core.Tests;
namespace TonSdk.Core.Tests.Boc;

public class CellTest
{
[Test]
public void SerializeTest()
{
// Arrange
const int sampleValue = 0x32fab9;
var builder = new CellBuilder();

public class CellTest {
// Store the same 32-bit value 8 times (total: 256 bits)
for (var i = 0; i < 8; i++)
{
builder.StoreUInt(sampleValue, 32);
}

}
// Expected BoC produced by @ton/core (JavaScript):
// b.toBoc().toString("hex")
const string expectedBoc =
"b5ee9c724101010100220000400032fab90032fab90032fab90032fab90032fab90032fab90032fab90032fab979fc9ee0";

// Act
var cell = builder.Build();
var boc = cell.ToString("hex").ToLowerInvariant();

// Assert
Assert.That(boc, Is.EqualTo(expectedBoc));
}

[Test]
public void DeserializeTest()
{
// Arrange
const string boc =
"b5ee9c724101010100220000400032fab90032fab90032fab90032fab90032fab90032fab90032fab90032fab979fc9ee0";

const int sampleValue = 0x32fab9;

// Act
var cell = Cell.From(new Bits(Convert.FromHexString(boc)));
var slice = cell.Parse();

// Assert
// 8 values * 32 bits each = 256 bits remaining
Assert.That(slice.RemainderBits, Is.EqualTo(32 * 8));

for (var i = 0; i < 8; i++)
{
var value = (int)slice.LoadUInt(32);
Assert.That(value, Is.EqualTo(sampleValue));
}
}
}