Assert.NotNull(newBlock.Id,"Newly placed block is missing Id. This should be populated when the block is placed.","Newly placed block Id is not null, block successfully placed.");
if(!Assert.CloseTo(newBlock.Position,(Unity.Mathematics.float3.zero+2),$"Newly placed block at {newBlock.Position} is expected at {Unity.Mathematics.float3.zero + 2}.","Newly placed block position matches."))return;
Assert.Errorless(()=>{textBlock=Block.PlaceNew<TextBlock>(BlockIDs.TextBlock,Unity.Mathematics.float3.zero+1);},"Block.PlaceNew<TextBlock>() raised an exception: ","Block.PlaceNew<TextBlock>() completed without issue.");
if(!Assert.NotNull(textBlock,"Block.PlaceNew<TextBlock>() returned null, possibly because it failed silently.","Specialized TextBlock is not null."))return;
if(!Assert.NotNull(textBlock.Text,"TextBlock.Text is null, possibly because it failed silently.","TextBlock.Text is not null."))return;
if(!Assert.NotNull(textBlock.TextBlockId,"TextBlock.TextBlockId is null, possibly because it failed silently.","TextBlock.TextBlockId is not null."))return;
Motorb=null;// Note: the assignment operation is a lambda, which slightly confuses the compiler
Assert.Errorless(()=>{b=newBlock.Specialise<Motor>();},"Block.Specialize<Motor>() raised an exception: ","Block.Specialize<Motor>() completed without issue.");
if(!Assert.NotNull(b,"Block.Specialize<Motor>() returned null, possibly because it failed silently.","Specialized Motor is not null."))return;
if(!Assert.CloseTo(b.Torque,75f,$"Motor.Torque {b.Torque} does not equal default value, possibly because it failed silently.","Motor.Torque close enough to default."))return;
if(!Assert.CloseTo(b.TopSpeed,30f,$"Motor.TopSpeed {b.TopSpeed} does not equal default value, possibly because it failed silently.","Motor.Torque is close enough to default."))return;
if(!Assert.Equal(b.Reverse,false,$"Motor.Reverse {b.Reverse} does not equal default value, possibly because it failed silently.","Motor.Reverse is default."))return;
Pistonb=null;// Note: the assignment operation is a lambda, which slightly confuses the compiler
Assert.Errorless(()=>{b=newBlock.Specialise<Piston>();},"Block.Specialize<Piston>() raised an exception: ","Block.Specialize<Piston>() completed without issue.");
if(!Assert.NotNull(b,"Block.Specialize<Piston>() returned null, possibly because it failed silently.","Specialized Piston is not null."))return;
if(!Assert.CloseTo(b.MaximumExtension,1.01f,$"Piston.MaximumExtension {b.MaximumExtension} does not equal default value, possibly because it failed silently.","Piston.MaximumExtension is close enough to default."))return;
if(!Assert.CloseTo(b.MaximumForce,750f,$"Piston.MaximumForce {b.MaximumForce} does not equal default value, possibly because it failed silently.","Piston.MaximumForce is close enough to default."))return;
Servob=null;// Note: the assignment operation is a lambda, which slightly confuses the compiler
Assert.Errorless(()=>{b=newBlock.Specialise<Servo>();},"Block.Specialize<Servo>() raised an exception: ","Block.Specialize<Servo>() completed without issue.");
if(!Assert.NotNull(b,"Block.Specialize<Servo>() returned null, possibly because it failed silently.","Specialized Servo is not null."))return;
if(!Assert.CloseTo(b.MaximumAngle,180f,$"Servo.MaximumAngle {b.MaximumAngle} does not equal default value, possibly because it failed silently.","Servo.MaximumAngle is close enough to default."))return;
if(!Assert.CloseTo(b.MinimumAngle,-180f,$"Servo.MinimumAngle {b.MinimumAngle} does not equal default value, possibly because it failed silently.","Servo.MinimumAngle is close enough to default."))return;
if(!Assert.CloseTo(b.MaximumForce,750f,$"Servo.MaximumForce {b.MaximumForce} does not equal default value, possibly because it failed silently.","Servo.MaximumForce is close enough to default."))return;