mirror of
https://github.com/cccb/servicepoint.git
synced 2025-01-18 18:10:14 +01:00
add unit tests for null handling, fix assertion in rust code
This commit is contained in:
parent
9cdb5e0dbf
commit
66823d0676
|
@ -70,7 +70,7 @@ pub unsafe extern "C" fn sp_cp437_grid_load(
|
||||||
data: *const u8,
|
data: *const u8,
|
||||||
data_length: usize,
|
data_length: usize,
|
||||||
) -> NonNull<SPCp437Grid> {
|
) -> NonNull<SPCp437Grid> {
|
||||||
assert!(data.is_null());
|
assert!(!data.is_null());
|
||||||
let data = std::slice::from_raw_parts(data, data_length);
|
let data = std::slice::from_raw_parts(data, data_length);
|
||||||
let result = Box::new(SPCp437Grid(servicepoint::Cp437Grid::load(
|
let result = Box::new(SPCp437Grid(servicepoint::Cp437Grid::load(
|
||||||
width, height, data,
|
width, height, data,
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
namespace ServicePoint.Tests;
|
||||||
|
|
||||||
|
public class BitVecTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void UseAfterFree()
|
||||||
|
{
|
||||||
|
var bitvec = new BitVec(8);
|
||||||
|
_ = Command.BitmapLinear(0, bitvec, CompressionCode.Uncompressed);
|
||||||
|
Assert.Throws<NullReferenceException>(() => _ = Command.BitmapLinear(0, bitvec, CompressionCode.Uncompressed));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
namespace ServicePoint.Tests;
|
||||||
|
|
||||||
|
public class BitmapTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void UseAfterFree()
|
||||||
|
{
|
||||||
|
var bitmap = Bitmap.NewScreenSized();
|
||||||
|
_ = Command.BitmapLinearWin(0, 0, bitmap, CompressionCode.Uncompressed);
|
||||||
|
Assert.Throws<NullReferenceException>(() => _ = Command.BitmapLinearWin(0, 0, bitmap, CompressionCode.Uncompressed));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
namespace ServicePoint.Tests;
|
||||||
|
|
||||||
|
public class BBrightnessGridTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void UseAfterFree()
|
||||||
|
{
|
||||||
|
var grid = new BrightnessGrid(23, 42);
|
||||||
|
_ = Command.CharBrightness(0, 0, grid);
|
||||||
|
Assert.Throws<NullReferenceException>(() => _ = Command.CharBrightness(0, 0, grid));
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,10 +5,11 @@ public class CommandTests
|
||||||
private Connection _fakeConnection = Connection.Fake();
|
private Connection _fakeConnection = Connection.Fake();
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Test1()
|
public void UseAfterSend()
|
||||||
{
|
{
|
||||||
var command = Command.Clear();
|
var command = Command.Clear();
|
||||||
_fakeConnection.Send(command);
|
_fakeConnection.Send(command);
|
||||||
Assert.Throws<NullReferenceException>(() => _fakeConnection.Send(command));
|
Assert.Throws<NullReferenceException>(() => _fakeConnection.Send(command));
|
||||||
|
_fakeConnection.Send(Command.Clear());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
|
namespace ServicePoint.Tests;
|
||||||
|
|
||||||
|
public class Cp437GridTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void UseAfterFree()
|
||||||
|
{
|
||||||
|
var grid = new Cp437Grid(2, 3);
|
||||||
|
_ = Command.Cp437Data(0, 0, grid.Clone());
|
||||||
|
_ = Command.Cp437Data(0, 0, grid);
|
||||||
|
Assert.Throws<NullReferenceException>(() => _ = Command.Cp437Data(0, 0, grid));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void ReadAndWriteString()
|
||||||
|
{
|
||||||
|
var grid = new Cp437Grid(3, 2);
|
||||||
|
grid[1] = "abc";
|
||||||
|
Assert.Equal("abc", grid[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void LoadSpan()
|
||||||
|
{
|
||||||
|
var ascii_str = "abc123"u8;
|
||||||
|
var grid = Cp437Grid.Load(3, 2, ascii_str);
|
||||||
|
Assert.Equal("abc", grid[0]);
|
||||||
|
Assert.Equal("123", grid[1]);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue