public void BufferSubData_Direct_Ok() { // Arrange var gl = Substitute.For<IOpenGL30>(); gl.WhenForAnyArgs(g => g.GenBuffers(Arg.Any<int>(), Arg.Any<uint[]>())) .Do(x => { ((uint[])x[1])[0] = 1; }); var buffer = new ElementBuffer<int>(new[] { 1, 2, 3 }, gl); // Act buffer.BufferSubData(BufferUsage.StaticDraw, 1, 2); // Assert gl.Received().BufferSubData((uint)BufferTarget.ElementArray, new IntPtr(1), new IntPtr(2), Arg.Any<IntPtr>()); }