@@ -36,14 +36,14 @@ public class PascalTypeTests
|
||||
[Fact]
|
||||
public void PascalFunctionTypeTests()
|
||||
{
|
||||
PascalType function1 = new PascalFunctionType([new PascalParameterType(PascalBasicType.Integer, false, "a")],
|
||||
PascalType function1 = new PascalFunctionType([new PascalParameterType(PascalBasicType.Integer, "a")],
|
||||
PascalBasicType.Void);
|
||||
PascalType function2 = new PascalFunctionType([new PascalParameterType(PascalBasicType.Integer, false, "a")],
|
||||
PascalType function2 = new PascalFunctionType([new PascalParameterType(PascalBasicType.Integer, "a")],
|
||||
PascalBasicType.Void);
|
||||
|
||||
Assert.Equal(function1, function2);
|
||||
|
||||
PascalType function3 = new PascalFunctionType([new PascalParameterType(PascalBasicType.Real, true, "a")],
|
||||
PascalType function3 = new PascalFunctionType([new PascalParameterType(PascalBasicType.Real, "a")],
|
||||
PascalBasicType.Integer);
|
||||
Assert.NotEqual(function1, function3);
|
||||
}
|
||||
|
@@ -9,13 +9,13 @@ public class SymbolTableTests
|
||||
{
|
||||
SymbolTable table = new();
|
||||
|
||||
Assert.True(table.TryGetType("integer", out PascalType? integer));
|
||||
Assert.True(table.TryGetType("Integer", out PascalType? integer));
|
||||
Assert.Equal(PascalBasicType.Integer, integer);
|
||||
Assert.True(table.TryGetType("real", out PascalType? real));
|
||||
Assert.True(table.TryGetType("Real", out PascalType? real));
|
||||
Assert.Equal(PascalBasicType.Real, real);
|
||||
Assert.True(table.TryGetType("boolean", out PascalType? boolean));
|
||||
Assert.True(table.TryGetType("Boolean", out PascalType? boolean));
|
||||
Assert.Equal(PascalBasicType.Boolean, boolean);
|
||||
Assert.True(table.TryGetType("char", out PascalType? character));
|
||||
Assert.True(table.TryGetType("Character", out PascalType? character));
|
||||
Assert.Equal(PascalBasicType.Character, character);
|
||||
}
|
||||
|
||||
@@ -25,10 +25,7 @@ public class SymbolTableTests
|
||||
SymbolTable table = new();
|
||||
|
||||
Assert.True(table.TryAddSymbol(new Symbol { SymbolName = "a", SymbolType = PascalBasicType.Integer }));
|
||||
Assert.True(table.TryAddSymbol(new Symbol
|
||||
{
|
||||
SymbolName = "temperature", SymbolType = PascalBasicType.Real, Const = true
|
||||
}));
|
||||
Assert.True(table.TryAddSymbol(new Symbol { SymbolName = "temperature", SymbolType = PascalBasicType.Real }));
|
||||
|
||||
Assert.True(table.TryGetSymbol("a", out Symbol? a));
|
||||
Assert.Equal(PascalBasicType.Integer, a.SymbolType);
|
||||
@@ -42,18 +39,12 @@ public class SymbolTableTests
|
||||
SymbolTable table = new();
|
||||
|
||||
Assert.True(table.TryAddSymbol(new Symbol { SymbolName = "a", SymbolType = PascalBasicType.Integer }));
|
||||
Assert.True(table.TryAddSymbol(new Symbol
|
||||
{
|
||||
SymbolName = "temperature", SymbolType = PascalBasicType.Real, Const = true
|
||||
}));
|
||||
Assert.True(table.TryAddSymbol(new Symbol { SymbolName = "temperature", SymbolType = PascalBasicType.Real }));
|
||||
|
||||
SymbolTable child = table.CreateChildTable();
|
||||
|
||||
Assert.True(child.TryAddSymbol(new Symbol{SymbolName = "a", SymbolType = PascalBasicType.Real}));
|
||||
Assert.True(child.TryAddSymbol(new Symbol
|
||||
{
|
||||
SymbolName = "level2", SymbolType = PascalBasicType.Boolean, Reference = true
|
||||
}));
|
||||
Assert.True(child.TryAddSymbol(new Symbol { SymbolName = "a", SymbolType = PascalBasicType.Real }));
|
||||
Assert.True(child.TryAddSymbol(new Symbol { SymbolName = "level2", SymbolType = PascalBasicType.Boolean }));
|
||||
|
||||
Assert.True(child.TryGetSymbol("a", out Symbol? a));
|
||||
Assert.Equal(PascalBasicType.Real, a.SymbolType);
|
||||
|
@@ -126,9 +126,9 @@ public class TypeCheckVisitorTests(ITestOutputHelper testOutputHelper)
|
||||
|
||||
Assert.True(visitor.SymbolTable.TryGetSymbol("test", out Symbol? symbol));
|
||||
Assert.Equal(symbol.SymbolType, new PascalFunctionType([
|
||||
new PascalParameterType(PascalBasicType.Integer, false, "a"),
|
||||
new PascalParameterType(PascalBasicType.Integer, false, "a"),
|
||||
new PascalParameterType(PascalBasicType.Integer, false, "a")
|
||||
new PascalParameterType(PascalBasicType.Integer, "a"),
|
||||
new PascalParameterType(PascalBasicType.Integer, "a"),
|
||||
new PascalParameterType(PascalBasicType.Integer, "a")
|
||||
], PascalBasicType.Void));
|
||||
}
|
||||
|
||||
@@ -148,9 +148,9 @@ public class TypeCheckVisitorTests(ITestOutputHelper testOutputHelper)
|
||||
|
||||
Assert.True(visitor.SymbolTable.TryGetSymbol("test", out Symbol? symbol));
|
||||
Assert.Equal(symbol.SymbolType, new PascalFunctionType([
|
||||
new PascalParameterType(PascalBasicType.Real, true, "a"),
|
||||
new PascalParameterType(PascalBasicType.Real, true, "a"),
|
||||
new PascalParameterType(PascalBasicType.Real, true, "a")
|
||||
new PascalParameterType(PascalBasicType.Real.ToReferenceType(),"a"),
|
||||
new PascalParameterType(PascalBasicType.Real.ToReferenceType(), "a"),
|
||||
new PascalParameterType(PascalBasicType.Real.ToReferenceType(), "a")
|
||||
], PascalBasicType.Void));
|
||||
}
|
||||
|
||||
@@ -170,10 +170,10 @@ public class TypeCheckVisitorTests(ITestOutputHelper testOutputHelper)
|
||||
|
||||
Assert.True(visitor.SymbolTable.TryGetSymbol("test", out Symbol? symbol));
|
||||
Assert.Equal(symbol.SymbolType, new PascalFunctionType([
|
||||
new PascalParameterType(PascalBasicType.Integer, false, "a"),
|
||||
new PascalParameterType(PascalBasicType.Integer, false, "a"),
|
||||
new PascalParameterType(PascalBasicType.Character, true, "a"),
|
||||
new PascalParameterType(PascalBasicType.Character, true, "a")
|
||||
new PascalParameterType(PascalBasicType.Integer, "a"),
|
||||
new PascalParameterType(PascalBasicType.Integer, "a"),
|
||||
new PascalParameterType(PascalBasicType.Character.ToReferenceType(), "a"),
|
||||
new PascalParameterType(PascalBasicType.Character.ToReferenceType(), "a")
|
||||
], PascalBasicType.Void));
|
||||
}
|
||||
|
||||
@@ -193,10 +193,10 @@ public class TypeCheckVisitorTests(ITestOutputHelper testOutputHelper)
|
||||
|
||||
Assert.True(visitor.SymbolTable.TryGetSymbol("test", out Symbol? symbol));
|
||||
Assert.Equal(symbol.SymbolType, new PascalFunctionType([
|
||||
new PascalParameterType(PascalBasicType.Integer, false, "a"),
|
||||
new PascalParameterType(PascalBasicType.Integer, false, "a"),
|
||||
new PascalParameterType(PascalBasicType.Character, true, "a"),
|
||||
new PascalParameterType(PascalBasicType.Character, true, "a")
|
||||
new PascalParameterType(PascalBasicType.Integer, "a"),
|
||||
new PascalParameterType(PascalBasicType.Integer, "a"),
|
||||
new PascalParameterType(PascalBasicType.Character.ToReferenceType(), "a"),
|
||||
new PascalParameterType(PascalBasicType.Character.ToReferenceType(), "a")
|
||||
], PascalBasicType.Real));
|
||||
}
|
||||
|
||||
@@ -219,16 +219,16 @@ public class TypeCheckVisitorTests(ITestOutputHelper testOutputHelper)
|
||||
|
||||
Assert.True(visitor.SymbolTable.TryGetSymbol("test1", out Symbol? symbol));
|
||||
Assert.Equal(symbol.SymbolType, new PascalFunctionType([
|
||||
new PascalParameterType(PascalBasicType.Integer, false, "a"),
|
||||
new PascalParameterType(PascalBasicType.Real, true, "a"),
|
||||
new PascalParameterType(PascalBasicType.Real, true, "a"),
|
||||
new PascalParameterType(PascalBasicType.Boolean, false, "a")
|
||||
new PascalParameterType(PascalBasicType.Integer, "a"),
|
||||
new PascalParameterType(PascalBasicType.Real.ToReferenceType(), "a"),
|
||||
new PascalParameterType(PascalBasicType.Real.ToReferenceType(), "a"),
|
||||
new PascalParameterType(PascalBasicType.Boolean, "a")
|
||||
], PascalBasicType.Void));
|
||||
|
||||
Assert.True(visitor.SymbolTable.TryGetSymbol("test2", out symbol));
|
||||
Assert.Equal(symbol.SymbolType, new PascalFunctionType([
|
||||
new PascalParameterType(PascalBasicType.Boolean, true, "a"),
|
||||
new PascalParameterType(PascalBasicType.Boolean, true, "a")
|
||||
new PascalParameterType(PascalBasicType.Boolean.ToReferenceType(), "a"),
|
||||
new PascalParameterType(PascalBasicType.Boolean.ToReferenceType(), "a")
|
||||
], PascalBasicType.Boolean));
|
||||
}
|
||||
|
||||
@@ -279,7 +279,6 @@ public class TypeCheckVisitorTests(ITestOutputHelper testOutputHelper)
|
||||
|
||||
Assert.True(visitor.SymbolTable.TryGetSymbol("a", out Symbol? symbol));
|
||||
Assert.Equal(PascalBasicType.Integer, symbol.SymbolType);
|
||||
Assert.True(symbol.Const);
|
||||
|
||||
Assert.True(visitor.SymbolTable.TryGetSymbol("b", out symbol));
|
||||
Assert.Equal(PascalBasicType.Real, symbol.SymbolType);
|
||||
@@ -290,7 +289,7 @@ public class TypeCheckVisitorTests(ITestOutputHelper testOutputHelper)
|
||||
Assert.True(visitor.SymbolTable.TryGetSymbol("test", out symbol));
|
||||
Assert.Equal(
|
||||
new PascalFunctionType([
|
||||
new PascalParameterType(PascalBasicType.Boolean, false, "a")
|
||||
new PascalParameterType(PascalBasicType.Boolean, "a")
|
||||
], PascalBasicType.Void), symbol.SymbolType);
|
||||
|
||||
Assert.False(visitor.SymbolTable.TryGetSymbol("d", out symbol));
|
||||
|
Reference in New Issue
Block a user