mirror of
https://github.com/Smaug123/WoofWare.PawPrint
synced 2025-10-10 00:08:39 +00:00
WIP
This commit is contained in:
@@ -70,7 +70,7 @@ module TestPureCases =
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
FileName = "CastClassSimpleInheritance.cs"
|
FileName = "CastClassSimpleInheritance.cs"
|
||||||
ExpectedReturnCode = 1
|
ExpectedReturnCode = 5
|
||||||
NativeImpls = MockEnv.make ()
|
NativeImpls = MockEnv.make ()
|
||||||
LocalVariablesOfMain = None
|
LocalVariablesOfMain = None
|
||||||
}
|
}
|
||||||
@@ -82,7 +82,7 @@ module TestPureCases =
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
FileName = "CastClassNull.cs"
|
FileName = "CastClassNull.cs"
|
||||||
ExpectedReturnCode = 1
|
ExpectedReturnCode = 42
|
||||||
NativeImpls = MockEnv.make ()
|
NativeImpls = MockEnv.make ()
|
||||||
LocalVariablesOfMain = None
|
LocalVariablesOfMain = None
|
||||||
}
|
}
|
||||||
@@ -106,7 +106,7 @@ module TestPureCases =
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
FileName = "CastClassMultipleInterfaces.cs"
|
FileName = "CastClassMultipleInterfaces.cs"
|
||||||
ExpectedReturnCode = 1
|
ExpectedReturnCode = 42
|
||||||
NativeImpls = MockEnv.make ()
|
NativeImpls = MockEnv.make ()
|
||||||
LocalVariablesOfMain = None
|
LocalVariablesOfMain = None
|
||||||
}
|
}
|
||||||
@@ -160,7 +160,7 @@ module TestPureCases =
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
FileName = "IsinstNull.cs"
|
FileName = "IsinstNull.cs"
|
||||||
ExpectedReturnCode = 1
|
ExpectedReturnCode = 42
|
||||||
NativeImpls = MockEnv.make ()
|
NativeImpls = MockEnv.make ()
|
||||||
LocalVariablesOfMain = None
|
LocalVariablesOfMain = None
|
||||||
}
|
}
|
||||||
@@ -176,6 +176,12 @@ module TestPureCases =
|
|||||||
NativeImpls = MockEnv.make ()
|
NativeImpls = MockEnv.make ()
|
||||||
LocalVariablesOfMain = None
|
LocalVariablesOfMain = None
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
FileName = "IsinstFailedInterface.cs"
|
||||||
|
ExpectedReturnCode = 1
|
||||||
|
NativeImpls = MockEnv.make ()
|
||||||
|
LocalVariablesOfMain = None
|
||||||
|
}
|
||||||
{
|
{
|
||||||
FileName = "CastClassInterface.cs"
|
FileName = "CastClassInterface.cs"
|
||||||
ExpectedReturnCode = 1
|
ExpectedReturnCode = 1
|
||||||
@@ -184,7 +190,7 @@ module TestPureCases =
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
FileName = "IsinstInterface.cs"
|
FileName = "IsinstInterface.cs"
|
||||||
ExpectedReturnCode = 1
|
ExpectedReturnCode = 42
|
||||||
NativeImpls = MockEnv.make ()
|
NativeImpls = MockEnv.make ()
|
||||||
LocalVariablesOfMain = None
|
LocalVariablesOfMain = None
|
||||||
}
|
}
|
||||||
|
@@ -47,6 +47,7 @@
|
|||||||
<EmbeddedResource Include="sourcesPure\IsinstNull.cs" />
|
<EmbeddedResource Include="sourcesPure\IsinstNull.cs" />
|
||||||
<EmbeddedResource Include="sourcesPure\CastClassInvalid.cs" />
|
<EmbeddedResource Include="sourcesPure\CastClassInvalid.cs" />
|
||||||
<EmbeddedResource Include="sourcesPure\IsinstFailed.cs" />
|
<EmbeddedResource Include="sourcesPure\IsinstFailed.cs" />
|
||||||
|
<EmbeddedResource Include="sourcesPure\IsinstFailedInterface.cs" />
|
||||||
<EmbeddedResource Include="sourcesPure\CastClassInterface.cs" />
|
<EmbeddedResource Include="sourcesPure\CastClassInterface.cs" />
|
||||||
<EmbeddedResource Include="sourcesPure\IsinstInterface.cs" />
|
<EmbeddedResource Include="sourcesPure\IsinstInterface.cs" />
|
||||||
<EmbeddedResource Include="sourcesPure\CustomDelegate.cs" />
|
<EmbeddedResource Include="sourcesPure\CustomDelegate.cs" />
|
||||||
|
@@ -14,8 +14,11 @@ public class Program
|
|||||||
{
|
{
|
||||||
Bird sparrow = new Bird { CanFly = true };
|
Bird sparrow = new Bird { CanFly = true };
|
||||||
|
|
||||||
// This should fail and return null (not throw)
|
// Cast to object first to bypass compile-time checking
|
||||||
Fish fish = sparrow as Fish;
|
object obj = sparrow;
|
||||||
|
|
||||||
|
// This should fail at runtime and return null (not throw)
|
||||||
|
Fish fish = obj as Fish;
|
||||||
|
|
||||||
return fish == null ? 42 : 0;
|
return fish == null ? 42 : 0;
|
||||||
}
|
}
|
||||||
|
30
WoofWare.PawPrint.Test/sourcesPure/IsinstFailedInterface.cs
Normal file
30
WoofWare.PawPrint.Test/sourcesPure/IsinstFailedInterface.cs
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
public class Program
|
||||||
|
{
|
||||||
|
public interface IAnimal
|
||||||
|
{
|
||||||
|
string Name { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Bird : IAnimal
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public bool CanFly { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Fish : IAnimal
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public bool CanSwim { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int Main(string[] args)
|
||||||
|
{
|
||||||
|
IAnimal animal = new Bird { Name = "Sparrow", CanFly = true };
|
||||||
|
|
||||||
|
// This should fail at runtime and return null (not throw)
|
||||||
|
// because the actual object is Bird, not Fish
|
||||||
|
Fish fish = animal as Fish;
|
||||||
|
|
||||||
|
return fish == null ? 42 : 0;
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user