Skip to content

Commit cd5d0f5

Browse files
antonsyndclaude
andcommitted
test(compiler): update test expectations for str-to-string migration
Update 41 compiler tests with hardcoded Sharpy.Str expectations: - String literal output: ((Sharpy.Str)"...") → "..." - Type references: Sharpy.Str → string - Default params: default sentinel → literal defaults - Remove DiscoverPublicTypes_IncludesStr (Str type removed) - Update PrimitiveCatalog, TypeSyntaxMapper expectations 7 tests remain failing due to implementation bugs (variadic overload resolution and elif condition type checking). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent b24f293 commit cd5d0f5

53 files changed

Lines changed: 220 additions & 274 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/Sharpy.Compiler.Tests/CodeGen/OptionalResultCodeGenTests.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public void TypeMapping_ResultType_GeneratesResultGeneric()
7777
x: int !str = Ok(42)
7878
";
7979
var csharp = CompileToCSharp(code);
80-
csharp.Should().Contain("Result<int, Sharpy.Str>");
80+
csharp.Should().Contain("Result<int, string>");
8181
}
8282

8383
#endregion
@@ -116,7 +116,7 @@ public void Constructor_Ok_GeneratesResultOk()
116116
x: int !str = Ok(42)
117117
";
118118
var csharp = CompileToCSharp(code);
119-
csharp.Should().Contain("Result<int, Sharpy.Str>.Ok(42)");
119+
csharp.Should().Contain("Result<int, string>.Ok(42)");
120120
}
121121

122122
[Fact]
@@ -126,7 +126,7 @@ public void Constructor_Err_GeneratesResultErr()
126126
x: int !str = Err(""error"")
127127
";
128128
var csharp = CompileToCSharp(code);
129-
csharp.Should().Contain("Result<int, Sharpy.Str>.Err(");
129+
csharp.Should().Contain("Result<int, string>.Err(");
130130
}
131131

132132
#endregion
@@ -153,7 +153,7 @@ def parse(s: str) -> int !str:
153153
return Ok(42)
154154
";
155155
var csharp = CompileToCSharp(code);
156-
csharp.Should().Contain("Result<int, Sharpy.Str>");
156+
csharp.Should().Contain("Result<int, string>");
157157
csharp.Should().Contain("Parse(");
158158
}
159159

@@ -181,8 +181,8 @@ def parse(s: str) -> int !str:
181181
return Ok(42)
182182
";
183183
var csharp = CompileToCSharp(code);
184-
csharp.Should().Contain("Result<int, Sharpy.Str>.Ok(42)");
185-
csharp.Should().Contain("Result<int, Sharpy.Str>.Err(");
184+
csharp.Should().Contain("Result<int, string>.Ok(42)");
185+
csharp.Should().Contain("Result<int, string>.Err(");
186186
}
187187

188188
#endregion
@@ -555,9 +555,9 @@ def test(obj: object) -> str?:
555555
return obj to str?
556556
";
557557
var csharp = CompileToCSharp(code);
558-
csharp.Should().Contain("Optional<Sharpy.Str>.Some(");
558+
csharp.Should().Contain("Optional<string>.Some(");
559559
csharp.Should().Contain("default");
560-
csharp.Should().NotContain("as Sharpy.Str");
560+
csharp.Should().NotContain("as string");
561561
}
562562

563563
#endregion

src/Sharpy.Compiler.Tests/CodeGen/RoslynEmitterAbstractTests.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,8 @@ def describe(self) -> str:
134134

135135
code.Should().Contain("public abstract class Shape");
136136
code.Should().Contain("public abstract double Area();");
137-
code.Should().Contain("public Sharpy.Str Describe()");
138-
code.Should().Contain("return ((Sharpy.Str)\"shape\")");
137+
code.Should().Contain("public string Describe()");
138+
code.Should().Contain("return \"shape\"");
139139
}
140140

141141
[Fact]
@@ -219,7 +219,7 @@ def area(self) -> float: ...
219219
code.Should().Contain("public abstract class Shape : IDrawable, ISerializable");
220220
// Should generate stubs for both interface methods
221221
code.Should().Contain("public abstract void Draw();");
222-
code.Should().Contain("public abstract Sharpy.Str Serialize();");
222+
code.Should().Contain("public abstract string Serialize();");
223223
}
224224

225225
[Fact]
@@ -241,9 +241,9 @@ def area(self) -> float: ...
241241

242242
code.Should().Contain("public abstract class Shape : IJsonSerializable");
243243
// Should generate stub for the method from IJsonSerializable
244-
code.Should().Contain("public abstract Sharpy.Str ToJson();");
244+
code.Should().Contain("public abstract string ToJson();");
245245
// Should generate stub for inherited method from ISerializable
246-
code.Should().Contain("public abstract Sharpy.Str Serialize();");
246+
code.Should().Contain("public abstract string Serialize();");
247247
}
248248

249249
[Fact]

src/Sharpy.Compiler.Tests/CodeGen/RoslynEmitterDefinitionTests.ClassTests.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public void GenerateClassDeclaration_WithFields_GeneratesFieldDeclarations()
6767
// Debug: Print the generated code
6868

6969
// Assert
70-
Assert.Contains("public Sharpy.Str Name;", code);
70+
Assert.Contains("public string Name;", code);
7171
Assert.Contains("public int Age;", code);
7272
}
7373

@@ -102,7 +102,7 @@ public void GenerateClassDeclaration_WithMethod_GeneratesMethodDeclaration()
102102
var code = compilationUnit.NormalizeWhitespace().ToFullString();
103103

104104
// Assert
105-
Assert.Contains("public Sharpy.Str Greet()", code);
105+
Assert.Contains("public string Greet()", code);
106106
Assert.DoesNotContain("self", code); // self parameter should be skipped
107107
}
108108

@@ -288,7 +288,7 @@ public void GenerateClassDeclaration_WithConstructor_GeneratesConstructorMethod(
288288
var code = compilationUnit.NormalizeWhitespace().ToFullString();
289289

290290
// Assert
291-
Assert.Contains("public Person(Sharpy.Str name, int age)", code);
291+
Assert.Contains("public Person(string name, int age)", code);
292292
Assert.Contains("Name = name", code);
293293
Assert.Contains("Age = age", code);
294294
}
@@ -420,8 +420,8 @@ public void GenerateClassDeclaration_WithMultipleConstructors_GeneratesOverloads
420420

421421
// Assert - all three constructors are generated
422422
Assert.Contains("public Person()", code);
423-
Assert.Contains("public Person(Sharpy.Str name)", code);
424-
Assert.Contains("public Person(Sharpy.Str name, int age)", code);
423+
Assert.Contains("public Person(string name)", code);
424+
Assert.Contains("public Person(string name, int age)", code);
425425
}
426426

427427
[Fact]
@@ -521,7 +521,7 @@ public void GenerateClassDeclaration_ConstructorOverloads_DifferentParamTypes_Al
521521

522522
// Assert - both constructors with different parameter types
523523
Assert.Contains("public Value(int value)", code);
524-
Assert.Contains("public Value(Sharpy.Str value)", code);
524+
Assert.Contains("public Value(string value)", code);
525525
}
526526

527527
[Fact]
@@ -632,7 +632,7 @@ public void GenerateClassDeclaration_WithFieldEdgeCases_GeneratesCorrectFields()
632632
var code = compilationUnit.NormalizeWhitespace().ToFullString();
633633

634634
// Assert - verify name mangling (snake_case -> PascalCase)
635-
Assert.Contains("public Sharpy.Str UserName;", code);
635+
Assert.Contains("public string UserName;", code);
636636

637637
// Assert - verify field with initializer
638638
Assert.Contains("public int UserCount = 0;", code);
@@ -779,7 +779,7 @@ public void GenerateClassDeclaration_InheritsClassAndImplementsInterface_Generat
779779

780780
// Assert - C# requires base class first, then interfaces
781781
Assert.Contains("public class ColoredShape : Shape, IColorable", code);
782-
Assert.Contains("public void SetColor(Sharpy.Str color)", code);
782+
Assert.Contains("public void SetColor(string color)", code);
783783
}
784784

785785
[Fact]
@@ -856,7 +856,7 @@ public void GenerateClassDeclaration_ImplementsGenericInterface_GeneratesGeneric
856856
var code = compilationUnit.NormalizeWhitespace().ToFullString();
857857

858858
// Assert
859-
Assert.Contains("public class StringList : IList<Sharpy.Str>", code);
859+
Assert.Contains("public class StringList : IList<string>", code);
860860
}
861861

862862
[Fact]
@@ -895,7 +895,7 @@ public void GenerateClassDeclaration_ImplementsInterfaceWithProperties_Generates
895895
// Assert
896896
Assert.Contains("public class Entity : IEntity", code);
897897
Assert.Contains("public int Id = 0;", code);
898-
Assert.Contains("public Sharpy.Str Name = ((Sharpy.Str)\"Unknown\");", code);
898+
Assert.Contains("public string Name = \"Unknown\";", code);
899899
}
900900

901901
[Fact]

src/Sharpy.Compiler.Tests/CodeGen/RoslynEmitterDefinitionTests.DecoratorTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ public void GenerateMethod_WithVirtualDecorator_GeneratesVirtualMethod()
374374
var code = compilationUnit.NormalizeWhitespace().ToFullString();
375375

376376
// Assert
377-
Assert.Contains("public virtual Sharpy.Str OverridableMethod()", code);
377+
Assert.Contains("public virtual string OverridableMethod()", code);
378378
}
379379

380380
[Fact]
@@ -412,7 +412,7 @@ public void GenerateMethod_WithOverrideDecorator_GeneratesOverrideMethod()
412412
var code = compilationUnit.NormalizeWhitespace().ToFullString();
413413

414414
// Assert
415-
Assert.Contains("public override Sharpy.Str OverriddenMethod()", code);
415+
Assert.Contains("public override string OverriddenMethod()", code);
416416
}
417417

418418
[Fact]

src/Sharpy.Compiler.Tests/CodeGen/RoslynEmitterDefinitionTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public void GenerateFunctionDeclaration_WithDefaultParameter_GeneratesDefaultVal
109109
var code = compilationUnit.NormalizeWhitespace().ToFullString();
110110

111111
// Assert
112-
Assert.Contains("Sharpy.Str Greet(Sharpy.Str name = default)", code);
112+
Assert.Contains("string Greet(string name = \"World\")", code);
113113
}
114114

115115
[Fact]

src/Sharpy.Compiler.Tests/CodeGen/RoslynEmitterExpressionTests.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ public void GenerateExpression_FloatLiteral_GeneratesCorrectSyntax(string value,
8383
}
8484

8585
[Theory]
86-
[InlineData("hello", "((Sharpy.Str)\"hello\")")]
87-
[InlineData("world", "((Sharpy.Str)\"world\")")]
86+
[InlineData("hello", "\"hello\"")]
87+
[InlineData("world", "\"world\"")]
8888
public void GenerateExpression_StringLiteral_GeneratesCorrectSyntax(string value, string expected)
8989
{
9090
// Arrange
@@ -1096,7 +1096,7 @@ public void GenerateExpression_TypeCoercion_NullableValueType_GeneratesIsPattern
10961096
[Fact]
10971097
public void GenerateExpression_TypeCoercion_NullableReferenceType_GeneratesIsPattern()
10981098
{
1099-
// Arrange: value to str? → value is Sharpy.Str _temp ? Optional<Sharpy.Str>.Some(_temp) : default
1099+
// Arrange: value to str? → value is string _temp ? Optional<string>.Some(_temp) : default
11001100
var expr = new TypeCoercion
11011101
{
11021102
Value = new Identifier { Name = "obj" },
@@ -1109,8 +1109,8 @@ public void GenerateExpression_TypeCoercion_NullableReferenceType_GeneratesIsPat
11091109
// Assert
11101110
var code = result.ToString();
11111111
code.Should().Contain("is");
1112-
code.Should().Contain("Sharpy.Str");
1113-
code.Should().Contain("Optional<Sharpy.Str>.Some(");
1112+
code.Should().Contain("string");
1113+
code.Should().Contain("Optional<string>.Some(");
11141114
code.Should().Contain("default");
11151115
}
11161116

@@ -1152,7 +1152,7 @@ public void GenerateExpression_TypeCheck_GeneratesIsExpression()
11521152
var code = result.ToString();
11531153
code.Should().Contain("obj");
11541154
code.Should().Contain("is");
1155-
code.Should().Contain("Sharpy.Str");
1155+
code.Should().Contain("string");
11561156
}
11571157

11581158
#endregion
@@ -1612,7 +1612,7 @@ public void GenerateExpression_SetLiteralWithIdentifiers_UsesSemanticInfoFallbac
16121612

16131613
// Assert: The generated code should use string from SemanticInfo
16141614
var code = result.ToString();
1615-
code.Should().Contain("Sharpy.Set<Sharpy.Str>");
1615+
code.Should().Contain("Sharpy.Set<string>");
16161616
}
16171617

16181618
[Fact]
@@ -1645,7 +1645,7 @@ public void GenerateExpression_DictLiteralWithIdentifiers_UsesSemanticInfoFallba
16451645

16461646
// Assert: The generated code should use string,int from SemanticInfo
16471647
var code = result.ToString();
1648-
code.Should().Contain("Dict<Sharpy.Str,int>");
1648+
code.Should().Contain("Dict<string,int>");
16491649
}
16501650

16511651
[Fact]

src/Sharpy.Compiler.Tests/CodeGen/RoslynEmitterInterfaceTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ public void GenerateInterface_WithProperty_GeneratesPropertyWithGetSet()
202202

203203
// Assert
204204
Assert.Contains("public interface IEntity", code);
205-
Assert.Contains("Sharpy.Str Name", code);
205+
Assert.Contains("string Name", code);
206206
Assert.Contains("get;", code);
207207
Assert.Contains("set;", code);
208208
}

src/Sharpy.Compiler.Tests/CodeGen/RoslynEmitterModuleTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -752,8 +752,8 @@ public void GenerateCompilationUnit_NullableStringReturnType_GeneratesStringQues
752752
var result = emitter.GenerateCompilationUnit(module);
753753
var code = result.ToFullString();
754754

755-
// Assert - should generate Optional<Sharpy.Str> return type
756-
Assert.Contains("Optional<Sharpy.Str>", code);
755+
// Assert - should generate Optional<string> return type
756+
Assert.Contains("Optional<string>", code);
757757
}
758758

759759
[Fact]

src/Sharpy.Compiler.Tests/CodeGen/RoslynEmitterStatementTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public void GenerateStatement_AssertWithMessage_GeneratesDebugAssertWithMessage(
8989

9090
var result = GenerateStatementCode(stmt);
9191

92-
Assert.Equal("System.Diagnostics.Debug.Assert(true, ((Sharpy.Str)\"condition failed\"));", result);
92+
Assert.Equal("System.Diagnostics.Debug.Assert(true, \"condition failed\");", result);
9393
}
9494

9595
[Fact]
@@ -109,7 +109,7 @@ public void GenerateStatement_RaiseWithException_GeneratesThrow()
109109

110110
var result = GenerateStatementCode(stmt);
111111

112-
Assert.Equal("throw new Exception(((Sharpy.Str)\"error\"));", result);
112+
Assert.Equal("throw new Exception(\"error\");", result);
113113
}
114114

115115
[Fact]
@@ -233,8 +233,8 @@ public void GenerateStatement_DictVarDeclaration_UsesTargetTypeForElements()
233233

234234
var result = GenerateStatementCode(stmt);
235235

236-
Assert.Contains("Sharpy.Dict<Sharpy.Str, int>", result);
237-
Assert.Contains("new Sharpy.Dict<Sharpy.Str, int>", result);
236+
Assert.Contains("Sharpy.Dict<string, int>", result);
237+
Assert.Contains("new Sharpy.Dict<string, int>", result);
238238
Assert.DoesNotContain("Dict<object", result);
239239
}
240240

src/Sharpy.Compiler.Tests/CodeGen/RoslynEmitterVariableRedefinitionTests.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,10 @@ public void GenerateFunction_RedefineDifferentTypes_GeneratesVersionedNames()
162162

163163
// Should generate:
164164
// var x = 1;
165-
// var x_1 = ((Sharpy.Str)"hello");
165+
// var x_1 = "hello";
166166
// return x_1;
167167
Assert.Contains("var x = 1;", result);
168-
Assert.Contains("var x_1 = ((Sharpy.Str)\"hello\");", result);
168+
Assert.Contains("var x_1 = \"hello\";", result);
169169
Assert.Contains("return x_1;", result);
170170
}
171171

@@ -206,7 +206,7 @@ public void GenerateFunction_RedefineDifferentTypesExplicit_GeneratesVersionedNa
206206
// string x_1 = "hello";
207207
// return x_1;
208208
Assert.Contains("int x = 1;", result);
209-
Assert.Contains("Sharpy.Str x_1 = ((Sharpy.Str)\"hello\");", result);
209+
Assert.Contains("string x_1 = \"hello\";", result);
210210
Assert.Contains("return x_1;", result);
211211
}
212212

@@ -421,13 +421,13 @@ public void GenerateFunction_ComplexRedefinitionScenario_GeneratesCorrectVersion
421421
// Sharpy.Builtins.Print(x); // Uses x
422422
// var x_1 = 2;
423423
// Sharpy.Builtins.Print(x_1); // Uses x_1
424-
// var x_2 = ((Sharpy.Str)"hello");
424+
// var x_2 = "hello";
425425
// Sharpy.Builtins.Print(x_2); // Uses x_2
426426
Assert.Contains("var x = 1;", result);
427427
Assert.Contains("Sharpy.Builtins.Print(x);", result);
428428
Assert.Contains("var x_1 = 2;", result);
429429
Assert.Contains("Sharpy.Builtins.Print(x_1);", result);
430-
Assert.Contains("var x_2 = ((Sharpy.Str)\"hello\");", result);
430+
Assert.Contains("var x_2 = \"hello\";", result);
431431
Assert.Contains("Sharpy.Builtins.Print(x_2);", result);
432432
}
433433

@@ -563,7 +563,7 @@ public void GenerateFunction_UserDeclaredX1_NoCollision()
563563

564564
// x_1 (user's) is mangled to x1, x_1 (generated) stays as x_1 - no collision
565565
Assert.Contains("var x = 1;", result);
566-
Assert.Contains("var x1 = ((Sharpy.Str)\"user\");", result); // x_1 mangled to x1
566+
Assert.Contains("var x1 = \"user\";", result); // x_1 mangled to x1
567567
Assert.Contains("var x_1 = 2;", result); // Generated version name
568568
Assert.Contains("Sharpy.Builtins.Print(x_1);", result);
569569
Assert.Contains("Sharpy.Builtins.Print(x1);", result);
@@ -620,7 +620,7 @@ public void GenerateFunction_UserDeclaredSameAsVersioned_SkipsCollision()
620620

621621
// x1 (user's) stays as x1, x_1 (generated) has underscore - no collision
622622
Assert.Contains("var x = 1;", result);
623-
Assert.Contains("var x1 = ((Sharpy.Str)\"user\");", result); // stays as x1
623+
Assert.Contains("var x1 = \"user\";", result); // stays as x1
624624
Assert.Contains("var x_1 = 2;", result); // Generated version has underscore
625625
Assert.Contains("return x_1 + 10;", result);
626626
}

0 commit comments

Comments
 (0)