Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New rules: Missing brackets - Triggers on Temporary records - Non-Public Event Publishers #830

35 changes: 35 additions & 0 deletions BusinessCentral.LinterCop.Test/Rule0077.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
namespace BusinessCentral.LinterCop.Test;

public class Rule0077
{
private string _testCaseDir = "";

[SetUp]
public void Setup()
{
_testCaseDir = Path.Combine(Directory.GetParent(Environment.CurrentDirectory)!.Parent!.Parent!.FullName,
"TestCases", "Rule0077");
}

[Test]
[TestCase("NoBrackets")]
public async Task HasDiagnostic(string testCase)
{
var code = await File.ReadAllTextAsync(Path.Combine(_testCaseDir, "HasDiagnostic", $"{testCase}.al"))
.ConfigureAwait(false);

var fixture = RoslynFixtureFactory.Create<Rule0077MissingParenthesis>();
fixture.HasDiagnostic(code, Rule0077MissingParenthesis.DiagnosticDescriptors.Rule0077MissingParenthesis.Id);
}

[Test]
[TestCase("Brackets")]
public async Task NoDiagnostic(string testCase)
{
var code = await File.ReadAllTextAsync(Path.Combine(_testCaseDir, "NoDiagnostic", $"{testCase}.al"))
.ConfigureAwait(false);

var fixture = RoslynFixtureFactory.Create<Rule0077MissingParenthesis>();
fixture.NoDiagnosticAtMarker(code, Rule0077MissingParenthesis.DiagnosticDescriptors.Rule0077MissingParenthesis.Id);
}
}
38 changes: 38 additions & 0 deletions BusinessCentral.LinterCop.Test/Rule0078.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
namespace BusinessCentral.LinterCop.Test;

public class Rule0078
{
private string _testCaseDir = "";

[SetUp]
public void Setup()
{
_testCaseDir = Path.Combine(Directory.GetParent(Environment.CurrentDirectory)!.Parent!.Parent!.FullName,
"TestCases", "Rule0078");
}

[Test]
[TestCase("TempVar")]
public async Task HasDiagnostic(string testCase)
{
var code = await File.ReadAllTextAsync(Path.Combine(_testCaseDir, "HasDiagnostic", $"{testCase}.al"))
.ConfigureAwait(false);

var fixture = RoslynFixtureFactory.Create<Rule0078TemporaryRecordsShouldNotTriggerTableTriggers>();
fixture.HasDiagnostic(code, Rule0078TemporaryRecordsShouldNotTriggerTableTriggers.DiagnosticDescriptors.Rule0078TemporaryRecordsShouldNotTriggerTableTriggers.Id);
}

[Test]
[TestCase("TempVarImplicit")]
[TestCase("TempVarExplicit")]
[TestCase("TempTable")]
[TestCase("TempTableExplicitTemp")]
public async Task NoDiagnostic(string testCase)
{
var code = await File.ReadAllTextAsync(Path.Combine(_testCaseDir, "NoDiagnostic", $"{testCase}.al"))
.ConfigureAwait(false);

var fixture = RoslynFixtureFactory.Create<Rule0078TemporaryRecordsShouldNotTriggerTableTriggers>();
fixture.NoDiagnosticAtMarker(code, Rule0078TemporaryRecordsShouldNotTriggerTableTriggers.DiagnosticDescriptors.Rule0078TemporaryRecordsShouldNotTriggerTableTriggers.Id);
}
}
36 changes: 36 additions & 0 deletions BusinessCentral.LinterCop.Test/Rule0079.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
namespace BusinessCentral.LinterCop.Test;

public class Rule0079
{
private string _testCaseDir = "";

[SetUp]
public void Setup()
{
_testCaseDir = Path.Combine(Directory.GetParent(Environment.CurrentDirectory)!.Parent!.Parent!.FullName,
"TestCases", "Rule0079");
}

[Test]
[TestCase("PublicEvent")]
public async Task HasDiagnostic(string testCase)
{
var code = await File.ReadAllTextAsync(Path.Combine(_testCaseDir, "HasDiagnostic", $"{testCase}.al"))
.ConfigureAwait(false);

var fixture = RoslynFixtureFactory.Create<Rule0079NonPublicEventPublisher>();
fixture.HasDiagnostic(code, Rule0079NonPublicEventPublisher.DiagnosticDescriptors.Rule0079NonPublicEventPublisher.Id);
}

[Test]
[TestCase("LocalEvent")]
[TestCase("InternalEvent")]
public async Task NoDiagnostic(string testCase)
{
var code = await File.ReadAllTextAsync(Path.Combine(_testCaseDir, "NoDiagnostic", $"{testCase}.al"))
.ConfigureAwait(false);

var fixture = RoslynFixtureFactory.Create<Rule0079NonPublicEventPublisher>();
fixture.NoDiagnosticAtMarker(code, Rule0079NonPublicEventPublisher.DiagnosticDescriptors.Rule0079NonPublicEventPublisher.Id);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
codeunit 50100 MyCodeunit
{
procedure MyProcedure()
var
MyTable: Record MyTable;
i: Integer;
b: Boolean;
begin
[|Today|];
[|WorkDate|];
[|GuiAllowed|];
i := MyTable.[|Count|];
b := MyTable.[|IsEmpty|];
end;
}

table 50100 MyTable
{
fields
{
field(1; MyField; Integer) { }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
codeunit 50100 MyCodeunit
{
procedure MyProcedure()
var
MyTable: Record MyTable;
i: Integer;
b: Boolean;
d: Date;
begin
d := [|Today()|];
d := [|WorkDate()|];
b := [|GuiAllowed()|];
i := MyTable.[|Count()|];
b := MyTable.[|IsEmpty()|];
end;
}

table 50100 MyTable
{
fields
{
field(1; MyField; Integer) { }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
codeunit 50100 MyCodeunit
{
procedure MyProcedure()
var
MyTable: Record MyTable temporary;
begin
[|MyTable.Validate(MyField, 1)|];
[|MyTable.Insert(true)|];
[|MyTable.Modify(true)|];
[|MyTable.Delete(true)|];
[|MyTable.DeleteAll(true)|];
[|MyTable.ModifyAll(MyField, 1, true)|];
end;
}

table 50100 MyTable
{
fields
{
field(1; MyField; Integer) { }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
codeunit 50100 MyCodeunit
{
procedure MyProcedure()
var
MyTable: Record MyTable;
begin
[|MyTable.Validate(MyField, 1)|];
[|MyTable.Insert(true)|];
[|MyTable.Modify(true)|];
[|MyTable.Delete(true)|];
[|MyTable.DeleteAll(true)|];
[|MyTable.ModifyAll(MyField, 1, true)|];
end;
}

table 50100 MyTable
{
TableType = Temporary;

fields
{
field(1; MyField; Integer) { }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
codeunit 50100 MyCodeunit
{
procedure MyProcedure()
var
MyTable: Record MyTable temporary;
begin
[|MyTable.Validate(MyField, 1)|];
[|MyTable.Insert(true)|];
[|MyTable.Modify(true)|];
[|MyTable.Delete(true)|];
[|MyTable.DeleteAll(true)|];
[|MyTable.ModifyAll(MyField, 1, true)|];
end;
}

table 50100 MyTable
{
TableType = Temporary;

fields
{
field(1; MyField; Integer) { }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
codeunit 50100 MyCodeunit
{
procedure MyProcedure()
var
MyTable: Record MyTable temporary;
begin
[|MyTable.MyField := 1|];
[|MyTable.Insert(false)|];
[|MyTable.Modify(false)|];
[|MyTable.Delete(false)|];
[|MyTable.DeleteAll(false)|];
[|MyTable.ModifyAll(MyField, 1, false)|];
end;
}

table 50100 MyTable
{
fields
{
field(1; MyField; Integer) { }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
codeunit 50100 MyCodeunit
{
procedure MyProcedure()
var
MyTable: Record MyTable temporary;
begin
[|MyTable.MyField := 1|];
[|MyTable.Insert()|];
[|MyTable.Modify()|];
[|MyTable.Delete()|];
[|MyTable.DeleteAll()|];
[|MyTable.ModifyAll(MyField, 1)|];
end;
}

table 50100 MyTable
{
fields
{
field(1; MyField; Integer) { }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
table 50100 MyTable
{
fields
{
field(1; MyField; Integer) { }
}

[BusinessEvent(true)]
procedure [|MyProcedure|]()
begin
end;

[IntegrationEvent(true, false)]
procedure [|MyProcedure2|]()
begin
end;

[InternalEvent(false)]
procedure [|MyProcedure3|]()
begin
end;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
table 50100 MyTable
{
fields
{
field(1; MyField; Integer) { }
}

[BusinessEvent(true)]
internal procedure [|MyProcedure|]()
begin
end;

[IntegrationEvent(true, false)]
internal procedure [|MyProcedure2|]()
begin
end;

[InternalEvent(false)]
internal procedure [|MyProcedure3|]()
begin
end;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
table 50100 MyTable
{
fields
{
field(1; MyField; Integer) { }
}

[BusinessEvent(true)]
local procedure [|MyProcedure|]()
begin
end;

[IntegrationEvent(true, false)]
local procedure [|MyProcedure2|]()
begin
end;

[InternalEvent(false)]
local procedure [|MyProcedure3|]()
begin
end;
}
Loading
Loading