├── .editorconfig ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── config.yml │ └── feature_request.md ├── renovate.json └── workflows │ └── integration-test.yaml ├── .gitignore ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── ExampleProjects ├── FsharpMutateTestApp │ ├── boolMutateTestApp.Test │ │ ├── Program.fs │ │ ├── Tests.fs │ │ └── boolMutateTestApp.Test.fsproj │ ├── boolMutateTestApp.sln │ └── boolMutateTestApp │ │ ├── Program.fs │ │ └── boolMutateTestApp.fsproj ├── Xamarin.Forms │ ├── Xamarin.Forms.Android │ │ ├── Assets │ │ │ └── AboutAssets.txt │ │ ├── MainActivity.cs │ │ ├── Properties │ │ │ ├── AndroidManifest.xml │ │ │ └── AssemblyInfo.cs │ │ ├── Resources │ │ │ ├── AboutResources.txt │ │ │ ├── Resource.designer.cs │ │ │ ├── drawable │ │ │ │ ├── icon_about.png │ │ │ │ ├── icon_feed.png │ │ │ │ └── xamarin_logo.png │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ ├── icon.xml │ │ │ │ └── icon_round.xml │ │ │ ├── mipmap-hdpi │ │ │ │ ├── icon.png │ │ │ │ └── launcher_foreground.png │ │ │ ├── mipmap-mdpi │ │ │ │ ├── icon.png │ │ │ │ └── launcher_foreground.png │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── icon.png │ │ │ │ └── launcher_foreground.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── icon.png │ │ │ │ └── launcher_foreground.png │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── icon.png │ │ │ │ └── launcher_foreground.png │ │ │ └── values │ │ │ │ ├── colors.xml │ │ │ │ └── styles.xml │ │ └── Xamarin.Forms.Android.csproj │ ├── Xamarin.Forms.Tests │ │ ├── UnitTest1.cs │ │ └── Xamarin.Forms.Tests.csproj │ ├── Xamarin.Forms.sln │ └── Xamarin.Forms │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── AppShell.xaml │ │ ├── AppShell.xaml.cs │ │ ├── AssemblyInfo.cs │ │ ├── GettingStarted.txt │ │ ├── Models │ │ └── Item.cs │ │ ├── Services │ │ ├── IDataStore.cs │ │ └── MockDataStore.cs │ │ ├── ViewModels │ │ ├── AboutViewModel.cs │ │ ├── BaseViewModel.cs │ │ ├── ItemDetailViewModel.cs │ │ ├── ItemsViewModel.cs │ │ ├── LoginViewModel.cs │ │ └── NewItemViewModel.cs │ │ ├── Views │ │ ├── AboutPage.xaml │ │ ├── AboutPage.xaml.cs │ │ ├── ItemDetailPage.xaml │ │ ├── ItemDetailPage.xaml.cs │ │ ├── ItemsPage.xaml │ │ ├── ItemsPage.xaml.cs │ │ ├── LoginPage.xaml │ │ ├── LoginPage.xaml.cs │ │ ├── NewItemPage.xaml │ │ └── NewItemPage.xaml.cs │ │ └── Xamarin.Forms.Common.csproj └── fsharpsyntaxtrees │ ├── fsharpsyntaxtrees.sln │ └── fsharpsyntaxtrees │ ├── Program.cs │ └── fsharpsyntaxtrees.csproj ├── LICENSE ├── MAINTAINERS.md ├── README.md ├── RELEASING.md ├── adding_a_mutator.md ├── azure-pipelines.yml ├── docs ├── configuration.md ├── diagrams │ └── ProjectComponents.drawio ├── getting-started.md ├── ignore-mutations.md ├── images │ ├── ProjectComponents.png │ ├── console-dots-reporter-net.png │ ├── console-reporter-net.png │ ├── console-reporter-tree.png │ ├── devops-report-publisher-tab.png │ ├── filter-report.png │ ├── html-report-net.png │ ├── install-nuget-targets.png │ ├── progress-bar-net.png │ ├── stryker-80x80.png │ ├── stryker-net.png │ └── visual-studio-installer-sdk-tools.png ├── introduction.md ├── migration-guide.md ├── mutations.md ├── operating-modes.md ├── regex-mutations.md ├── reporters.md ├── stryker-in-pipeline.md ├── technical-reference │ ├── Mutation Orchestration Design.md │ ├── VsTest internal.md │ ├── _category_.yml │ ├── fsharp │ │ ├── _category_.yml │ │ ├── classes.md │ │ ├── current-state.md │ │ └── packages.md │ ├── introduction.md │ ├── mutant-schemata.md │ ├── project-components.md │ ├── research.md │ └── testing-framework.md └── updating.md ├── integration-tests.ps1 ├── integrationtest ├── TargetProjects │ ├── InitCommand │ │ └── readme.md │ ├── NetCore │ │ ├── BuildFiles │ │ │ └── Library.props │ │ ├── Directory.Build.props │ │ ├── EmptyTestProject │ │ │ ├── EmptyTestProject.csproj │ │ │ ├── UnitTest.cs │ │ │ ├── Usings.cs │ │ │ └── packages.lock.json │ │ ├── ExtraProject.XUnit │ │ │ ├── ExtraProject.XUnit.csproj │ │ │ ├── UnitTest1.cs │ │ │ └── packages.lock.json │ │ ├── ExtraProject │ │ │ ├── ExtraProject.csproj │ │ │ ├── Teacher.cs │ │ │ └── packages.lock.json │ │ ├── Generator │ │ │ ├── ExampleGenerator.cs │ │ │ ├── SourceGenerator.csproj │ │ │ └── packages.lock.json │ │ ├── IntegrationTestApp.sln │ │ ├── Library.FSharp.XUnit │ │ │ ├── Library.FSharp.XUnit.fsproj │ │ │ ├── LibraryTests.fs │ │ │ ├── packages.lock.json │ │ │ └── stryker-config.json │ │ ├── Library.FSharp │ │ │ ├── Library.FSharp.fsproj │ │ │ ├── Library.fs │ │ │ └── packages.lock.json │ │ ├── Library │ │ │ ├── Library.csproj │ │ │ ├── RecursiveMath.cs │ │ │ └── packages.lock.json │ │ ├── NetCoreTestProject.MSTest │ │ │ ├── Constructs.cs │ │ │ ├── NetCoreTestProject.MSTest.csproj │ │ │ └── packages.lock.json │ │ ├── NetCoreTestProject.NUnit │ │ │ ├── Constructs.cs │ │ │ ├── NetCoreTestProject.NUnit.csproj │ │ │ └── packages.lock.json │ │ ├── NetCoreTestProject.XUnit │ │ │ ├── Constructs.cs │ │ │ ├── NetCoreTestProject.XUnit.csproj │ │ │ ├── TimeoutTests.cs │ │ │ ├── UnsafeCodeTests.cs │ │ │ ├── VariousTests.cs │ │ │ ├── packages.lock.json │ │ │ └── stryker-config.json │ │ ├── SharedProject │ │ │ ├── SharedClass.cs │ │ │ ├── SharedProject.projitems │ │ │ └── SharedProject.shproj │ │ ├── TargetProject │ │ │ ├── Constructs │ │ │ │ ├── CSharp1.cs │ │ │ │ ├── CSharp10.cs │ │ │ │ ├── CSharp11.cs │ │ │ │ ├── CSharp12.cs │ │ │ │ ├── CSharp13.cs │ │ │ │ ├── CSharp2.cs │ │ │ │ ├── CSharp3.cs │ │ │ │ ├── CSharp4.cs │ │ │ │ ├── CSharp5.cs │ │ │ │ ├── CSharp6.cs │ │ │ │ ├── CSharp7.cs │ │ │ │ ├── CSharp8.cs │ │ │ │ ├── CSharp9.cs │ │ │ │ └── Csharp9_TopLevelStatement.cs │ │ │ ├── Defects │ │ │ │ ├── EmptyFor.cs │ │ │ │ ├── LamdaAssignment.cs │ │ │ │ ├── Linq.cs │ │ │ │ ├── LinqVariableName.cs │ │ │ │ ├── OutVariable.cs │ │ │ │ ├── SourceGenerator.cs │ │ │ │ ├── UnsafeCode.cs │ │ │ │ ├── VarTuples.cs │ │ │ │ └── WhileTrue.cs │ │ │ ├── StrykerFeatures │ │ │ │ ├── AutoGeneratedFile.cs │ │ │ │ ├── KilledMutants.cs │ │ │ │ ├── StrykerComments.cs │ │ │ │ ├── Timeout.cs │ │ │ │ └── UseAssert.cs │ │ │ ├── TargetProject.csproj │ │ │ ├── packages.lock.json │ │ │ └── stryker-config.json │ │ └── stryker-config.json │ └── NetFramework │ │ ├── ExampleLibrary │ │ ├── Class1.cs │ │ ├── ExampleLibrary.csproj │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── FullFrameworkApp.Test │ │ ├── FullFrameworkApp.Test.csproj │ │ ├── PersonTests.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── packages.config │ │ └── stryker-config.json │ │ ├── FullFrameworkApp.sln │ │ └── FullFrameworkApp │ │ ├── App.config │ │ ├── FullFrameworkApp.csproj │ │ ├── Person.cs │ │ ├── Program.cs │ │ ├── Properties │ │ └── AssemblyInfo.cs │ │ ├── Translations.Designer.cs │ │ ├── Translations.resx │ │ └── packages.config └── Validation │ ├── IntegrationTest.sln │ └── ValidationProject │ ├── StrykerInit.cs │ ├── ValidateStrykerResults.cs │ └── Validation.csproj ├── package-lock.json ├── package.json ├── pipeline-templates ├── nuget.config ├── populate-cache-steps.yml ├── prepare-integration-test-steps.yml ├── run-integration-test-steps.yml └── update-package-lock-files-stage.yml ├── prepare-release.js └── src ├── Directory.Build.props ├── Directory.Build.targets ├── Directory.Packages.props ├── Stryker.Abstractions ├── Baseline │ ├── BaselineProvider.cs │ └── IBaselineProvider.cs ├── Exceptions │ ├── CompilationException.cs │ ├── GeneralStrykerException.cs │ ├── InputException.cs │ └── NoTestProjectsException.cs ├── IMutant.cs ├── IMutator.cs ├── IProjectAndTests.cs ├── IProvideId.cs ├── IReadOnlyMutant.cs ├── ITimeoutValueCalculator.cs ├── Language.cs ├── LinqExpression.cs ├── MutantStatus.cs ├── Mutation.cs ├── MutationLevel.cs ├── Mutator.cs ├── MutatorDescriptionAttribute.cs ├── Options │ ├── IExclusionPattern.cs │ ├── ILogOptions.cs │ ├── IStrykerOptions.cs │ ├── IThresholds.cs │ ├── OptimizationModes.cs │ ├── ReportType.cs │ └── Reporter.cs ├── ProjectComponents │ ├── Health.cs │ ├── IFileLeaf.cs │ ├── IFilePattern.cs │ ├── IFolderComposite.cs │ ├── IProjectComponent.cs │ ├── ITestCase.cs │ ├── ITestFile.cs │ ├── ITestProject.cs │ └── ITestProjectsInfo.cs ├── Reporting │ ├── IJsonMutant.cs │ ├── IJsonReport.cs │ ├── IJsonTest.cs │ ├── IJsonTestFile.cs │ ├── ILocation.cs │ ├── IPosition.cs │ ├── IReporter.cs │ └── ISourceFile.cs ├── Stryker.Abstractions.csproj ├── Testing │ ├── CoverageConfidence.cs │ ├── ICoverageRunResult.cs │ ├── IFrameworkTestDescription.cs │ ├── ITestCase.cs │ ├── ITestDescription.cs │ ├── ITestGuids.cs │ ├── ITestIdentifiers.cs │ ├── ITestResult.cs │ ├── ITestRunResult.cs │ ├── ITestRunner.cs │ ├── ITestSet.cs │ ├── MutationTestingRequirements.cs │ ├── TestDescription.cs │ └── TestFrameworks.cs └── packages.lock.json ├── Stryker.CLI ├── CHANGELOG.md ├── Stryker.CLI.UnitTest │ ├── CommandLineConfigReaderTests.cs │ ├── ConfigBuilderTests.cs │ ├── ConfigFiles │ │ ├── MultipleDefaultWithJson │ │ │ ├── stryker-config.json │ │ │ ├── stryker-config.yaml │ │ │ └── stryker-config.yml │ │ ├── SingleDefaultYaml │ │ │ └── stryker-config.yaml │ │ ├── SingleDefaultYml │ │ │ └── stryker-config.yml │ │ ├── TwoWithYml │ │ │ ├── stryker-config.yaml │ │ │ └── stryker-config.yml │ │ └── UserConfigWithDefault │ │ │ ├── custom_config.json │ │ │ └── stryker-config.json │ ├── FileConfigReaderTests.cs │ ├── Logging │ │ └── InputBuilderTests.cs │ ├── Stryker.CLI.UnitTest.csproj │ ├── StrykerCLIInitCommandTests.cs │ ├── StrykerCLITests.cs │ ├── filled-stryker-config.json │ ├── filled-stryker-config.yaml │ ├── packages.lock.json │ └── stryker-config.json └── Stryker.CLI │ ├── Clients │ └── StrykerNugetFeedClient.cs │ ├── CommandLineConfig │ ├── CliInput.cs │ ├── CommandLineConfigReader.cs │ ├── GroupedHelpTextGenerator.cs │ └── InputCategory.cs │ ├── ConfigBuilder.cs │ ├── FileBasedInput.cs │ ├── FileConfigReader.cs │ ├── FileConfigWriter.cs │ ├── Logging │ ├── ApplicationLogging.cs │ └── LoggingInitializer.cs │ ├── Program.cs │ ├── Stryker.CLI.csproj │ ├── StrykerCLI.cs │ ├── packages.lock.json │ └── runtimeconfig.template.json ├── Stryker.Core ├── CHANGELOG.md ├── Stryker.Core.UnitTest │ ├── AssertExtensions.cs │ ├── Baseline │ │ ├── Providers │ │ │ ├── AzureFileShareBaselineProviderTests.cs │ │ │ ├── DashboardBaselineProviderTests.cs │ │ │ └── DiskBaselineProviderTests.cs │ │ └── Utils │ │ │ └── BaselineMutantHelperTests.cs │ ├── Clients │ │ └── DashboardClientsTest.cs │ ├── Compiling │ │ ├── CSharpCompilingProcessTests.cs │ │ └── CSharpRollbackProcessTests.cs │ ├── DashboardCompare │ │ └── GitInfoProviderTests.cs │ ├── DiffProviders │ │ └── GitDiffProviderTests.cs │ ├── ExclusionPatternTests.cs │ ├── FilePatternTests.cs │ ├── Helpers │ │ ├── TextSpanHelperTests.cs │ │ └── VsTestHelperTests.cs │ ├── IgnoreIfAttribute.cs │ ├── Initialisation │ │ ├── BuildAnalyzerTestsBase.cs │ │ ├── Buildalyzer │ │ │ └── AnalyzerResultExtensionsTests.cs │ │ ├── InitialBuildProcessTests.cs │ │ ├── InitialTestProcessTests.cs │ │ ├── InitialisationProcessTests.cs │ │ ├── InputFileResolverTests.cs │ │ ├── NugetRestoreProcessTests.cs │ │ ├── ProjectMutatorTests.cs │ │ ├── ProjectOrchestratorTests.cs │ │ ├── TargetFrameworkResolutionTests.cs │ │ └── TimeoutValueCalculatorTests.cs │ ├── InjectedHelpers │ │ └── InjectedHelperTests.cs │ ├── LoggerMockExtensions.cs │ ├── MockExtensions.cs │ ├── MutantFilters │ │ ├── BaselineMutantFilterTests.cs │ │ ├── ExcludeFromCodeCoverageFilterTests.cs │ │ ├── ExcludeLinqExpressionFilterTests.cs │ │ ├── ExcludeMutationMutantFilterTests.cs │ │ ├── FilePatternMutantFilterTests.cs │ │ ├── IgnoreBlockMutantFilterTests.cs │ │ ├── IgnoredMethodMutantFilterTests.cs │ │ ├── MutantFilterFactoryTests.cs │ │ └── SinceMutantFilterTests.cs │ ├── Mutants │ │ ├── CsharpMutantOrchestratorTests.cs │ │ ├── MutantOrchestratorTestsBase.cs │ │ ├── MutantPlacerTests.cs │ │ ├── MutantTests.cs │ │ └── StrykerCommentTests.cs │ ├── MutationTest │ │ ├── CSharpMutationTestProcessTests.cs │ │ ├── FullRunScenario.cs │ │ ├── MutationTestExecutorTests.cs │ │ └── MutationTestProcessTests.cs │ ├── Mutators │ │ ├── AbstractMutatorTests.cs │ │ ├── ArrayCreationMutatorTests.cs │ │ ├── AssignmentStatementMutatorTests.cs │ │ ├── BinaryExpressionMutatorTests.cs │ │ ├── BinaryPatternMutatorTests.cs │ │ ├── BlockMutatorTests.cs │ │ ├── BooleanMutatorTests.cs │ │ ├── CheckedMutatorTests.cs │ │ ├── CollectionExpressionMutatorTests.cs │ │ ├── ConditionalExpressionMutatorTests.cs │ │ ├── InitializerMutatorTests.cs │ │ ├── InterpolatedStringMutatorTests.cs │ │ ├── IsPatternExpressionMutatorTests.cs │ │ ├── LinqMutatorTest.cs │ │ ├── MathMutatorTest.cs │ │ ├── NegateConditionMutatorTests.cs │ │ ├── NullCoalescingExpressionMutatorTests.cs │ │ ├── ObjectCreationMutatorTests.cs │ │ ├── PostfixUnaryMutatorTests.cs │ │ ├── PrefixUnaryMutatorTests.cs │ │ ├── RegexMutatorTest.cs │ │ ├── RelationalPatternMutatorTests.cs │ │ ├── StatementMutatorTests.cs │ │ ├── StringEmptyMutatorTests.cs │ │ ├── StringMethodMutatorTests.cs │ │ ├── StringMethodToConstantMutatorTests.cs │ │ ├── StringMutatorTests.cs │ │ └── TestMutator.cs │ ├── Options │ │ ├── Inputs │ │ │ ├── AdditionalTimeoutMsInputTests.cs │ │ │ ├── AzureFileStorageSasInputTests.cs │ │ │ ├── AzureFileStorageUrlInputTests.cs │ │ │ ├── BasePathInputTests.cs │ │ │ ├── BaselineProviderInputTests.cs │ │ │ ├── BreakOnInitialTestFailureInputTests.cs │ │ │ ├── ConcurrencyInputTests.cs │ │ │ ├── ConfigurationInputTests.cs │ │ │ ├── DashboardApiKeyInputTests.cs │ │ │ ├── DashboardUrlInputTests.cs │ │ │ ├── DevModeInputTests.cs │ │ │ ├── DiffIgnoreChangesInputTests.cs │ │ │ ├── DisableBailInputTests.cs │ │ │ ├── DisableMixMutantsInputTests.cs │ │ │ ├── FallbackVersionInputTests.cs │ │ │ ├── IgnoreMethodsInputTests.cs │ │ │ ├── IgnoreMutationsInputTests.cs │ │ │ ├── LanguageVersionInputTests.cs │ │ │ ├── LogToFileInputTests.cs │ │ │ ├── ModuleNameInputTests.cs │ │ │ ├── MsBuildPathInputTests.cs │ │ │ ├── MutateInputTests.cs │ │ │ ├── MutationLevelInputTests.cs │ │ │ ├── OpenReportEnabledInputTests.cs │ │ │ ├── OpenReportInputTests.cs │ │ │ ├── OptimizationModeInputTests.cs │ │ │ ├── OutputPathInputTests.cs │ │ │ ├── ProjectNameInputTests.cs │ │ │ ├── ProjectVersionInputTests.cs │ │ │ ├── ReportFileNameInputTests.cs │ │ │ ├── ReportOpenerTests.cs │ │ │ ├── ReportersInputTests.cs │ │ │ ├── SinceInputTests.cs │ │ │ ├── SinceTargetInputTests.cs │ │ │ ├── SolutionInputTests.cs │ │ │ ├── SourceProjectNameInputTests.cs │ │ │ ├── TargetFrameworkInputTests.cs │ │ │ ├── TestCaseFilterInputTests.cs │ │ │ ├── TestProjectsInputTests.cs │ │ │ ├── ThresholdBreakInputTests.cs │ │ │ ├── ThresholdHighInputTests.cs │ │ │ ├── ThresholdLowInputTests.cs │ │ │ ├── VerbosityInputTests.cs │ │ │ └── WithBaselineInputTests.cs │ │ └── StrykerInputsTests.cs │ ├── ProjectComponents │ │ ├── CsharpProjectComponentTests.cs │ │ ├── SourceProjects │ │ │ └── SourceProjectInfoTests.cs │ │ └── TestProjects │ │ │ ├── TestCaseTests.cs │ │ │ ├── TestFileTests.cs │ │ │ ├── TestProjectTests.cs │ │ │ └── TestProjectsInfoTests.cs │ ├── Reporters │ │ ├── BaselineReporterTests.cs │ │ ├── BroadcastReporterTests.cs │ │ ├── ClearTextReporterTests.cs │ │ ├── ClearTextTreeReporterTests.cs │ │ ├── ConsoleDotReporterTests.cs │ │ ├── DashboardReporterTests.cs │ │ ├── Html │ │ │ ├── HtmlReporterTests.cs │ │ │ └── RealTime │ │ │ │ ├── Events │ │ │ │ ├── SseEventTest.cs │ │ │ │ └── SseEventTypeTest.cs │ │ │ │ ├── RealTimeMutantHandlerTest.cs │ │ │ │ └── SseServerTest.cs │ │ ├── Json │ │ │ ├── JsonReporterTests.cs │ │ │ ├── MockJsonReport.cs │ │ │ └── MockJsonReportFileComponent.cs │ │ ├── MarkdownSummaryReporterTests.cs │ │ ├── Progress │ │ │ ├── ProgressBarReporterTests.cs │ │ │ └── ProgressReporterTests.cs │ │ ├── ReportTestHelper.cs │ │ ├── ReporterFactoryTests.cs │ │ └── StatusReporterTests.cs │ ├── StringExtensions.cs │ ├── Stryker.Core.UnitTest.csproj │ ├── StrykerRunResultTests.cs │ ├── StrykerRunnerTests.cs │ ├── TestBase.cs │ ├── TestHelper.cs │ ├── TestResources │ │ ├── ExampleSourceFile.cs │ │ ├── ExampleTestFileA.cs │ │ ├── ExampleTestFileB.cs │ │ ├── ExampleTestFilePreprocessorSymbols.cs │ │ └── StrongNameKeyFile.snk │ ├── ToolHelpers │ │ └── BuildalyzerHelperTests.cs │ ├── packages.lock.json │ ├── stryker-config.json │ └── xunit.runner.json └── Stryker.Core │ ├── Baseline │ ├── Providers │ │ ├── AzureFileShareBaselineProvider.cs │ │ ├── BaselineProviderFactory.cs │ │ ├── DashboardBaselineProvider.cs │ │ ├── DiskBaselineProvider.cs │ │ ├── GitInfoProvider.cs │ │ └── IGitInfoProvider.cs │ └── Utils │ │ ├── BaselineMutantHelper.cs │ │ └── IBaselineMutantHelper.cs │ ├── Clients │ └── DashboardClient.cs │ ├── Compiling │ ├── CSharpRollbackProcess.cs │ ├── CSharpRollbackProcessResult.cs │ ├── CompilingProcessResult.cs │ └── CsharpCompilingProcess.cs │ ├── CoverageAnalysis │ ├── CoverageAnalyser.cs │ └── ICoverageAnalyser.cs │ ├── DiffProviders │ ├── DiffResult.cs │ ├── GitDiffProvider.cs │ └── IDiffProvider.cs │ ├── Helpers │ ├── MsBuildHelper.cs │ ├── ProcessUtil │ │ ├── ProcessExecutor.cs │ │ ├── ProcessExtensions.cs │ │ └── ProcessResult.cs │ └── RoslynHelper.cs │ ├── Initialisation │ ├── CsharpProjectComponentsBuilder.cs │ ├── FolderCompositeCache.cs │ ├── InitialBuildProcess.cs │ ├── InitialTestProcess.cs │ ├── InitialTestRun.cs │ ├── InitialisationProcess.cs │ ├── InputFileResolver.cs │ ├── NugetRestoreProcess.cs │ ├── ProjectComponentsBuilder.cs │ ├── ProjectMutator.cs │ ├── ProjectOrchestrator.cs │ └── TimeoutValueCalculator.cs │ ├── InjectedHelpers │ ├── CodeInjection.cs │ ├── Coverage │ │ └── MutantContext.cs │ └── MutantControl.cs │ ├── Instrumentation │ ├── BaseEngine.cs │ ├── ConditionalInstrumentationEngine.cs │ ├── DefaultInitializationEngine.cs │ ├── EndingReturnEngine.cs │ ├── IInstrumentCode.cs │ ├── IfInstrumentationEngine.cs │ ├── StaticInitializerMarkerEngine.cs │ └── StaticInstrumentationEngine.cs │ ├── MutantFilters │ ├── BaselineMutantFilter.cs │ ├── BroadcastMutantFilter.cs │ ├── ExcludeFromCodeCoverageFilter.cs │ ├── ExcludeLinqExpressionFilter.cs │ ├── ExcludeMutationMutantFilter.cs │ ├── FilePatternMutantFilter.cs │ ├── GeneratedCodeFilterExtension.cs │ ├── IMutantFilter.cs │ ├── IgnoreBlockMutantFilter.cs │ ├── IgnoredMethodMutantFilter.cs │ ├── MutantFilter.cs │ ├── MutantFilterFactory.cs │ └── SinceMutantFilter.cs │ ├── Mutants │ ├── BaseMutantOrchestrator.cs │ ├── CsharpMutantOrchestrator.cs │ ├── CsharpNodeOrchestrators │ │ ├── AccessorSyntaxOrchestrator.cs │ │ ├── AnonymousFunctionExpressionOrchestrator.cs │ │ ├── BaseFunctionOrchestrator.cs │ │ ├── BaseMethodDeclarationOrchestrator.cs │ │ ├── BlockOrchestrator.cs │ │ ├── CommentParser.cs │ │ ├── ConditionalExpressionOrchestrator.cs │ │ ├── ConstantPatternSyntaxOrchestrator.cs │ │ ├── DoNotMutateOrchestrator.cs │ │ ├── ExpressionBodiedPropertyOrchestrator.cs │ │ ├── ExpressionSpecificOrchestrator.cs │ │ ├── INodeOrchestrator.cs │ │ ├── InvocationExpressionOrchestrator.cs │ │ ├── LocalDeclarationOrchestrator.cs │ │ ├── LocalFunctionStatementOrchestrator.cs │ │ ├── MemberAccessExpressionOrchestrator.cs │ │ ├── MemberDefinitionOrchestrator.cs │ │ ├── MutateAtStatementLevelOrchestrator.cs │ │ ├── NodeSpecificOrchestrator.cs │ │ ├── StatementSpecificOrchestrator.cs │ │ ├── StaticConstructorOrchestrator.cs │ │ ├── StaticFieldDeclarationOrchestrator.cs │ │ └── SyntaxNodeOrchestrator.cs │ ├── Mutant.cs │ ├── MutantInfo.cs │ ├── MutantPlacer.cs │ ├── MutationContext.cs │ └── MutationStore.cs │ ├── MutationTest │ ├── CsharpMutationProcess.cs │ ├── IMutationProcess.cs │ ├── MutationTestExecutor.cs │ ├── MutationTestInput.cs │ └── MutationTestProcess.cs │ ├── Mutators │ ├── ArrayCreationMutator.cs │ ├── AssignmentStatementMutator.cs │ ├── BinaryExpressionMutator.cs │ ├── BinaryPatternMutator.cs │ ├── BlockMutator.cs │ ├── BooleanMutator.cs │ ├── CheckedMutator.cs │ ├── CollectionExpressionMutator.cs │ ├── ConditionalExpressionMutator.cs │ ├── InitializerMutator.cs │ ├── InterpolatedStringMutator.cs │ ├── IsPatternExpressionMutator.cs │ ├── LinqMutator.cs │ ├── MathMutator.cs │ ├── MutatorBase.cs │ ├── NegateConditionMutator.cs │ ├── NullCoalescingExpressionMutator.cs │ ├── ObjectCreationMutator.cs │ ├── PostfixUnaryMutator.cs │ ├── PrefixUnaryMutator.cs │ ├── RegexMutator.cs │ ├── RelationalPatternMutator.cs │ ├── StatementMutator.cs │ ├── StringEmptyMutator.cs │ ├── StringMethodMutator.cs │ ├── StringMethodToConstantMutator.cs │ └── StringMutator.cs │ ├── ProjectComponents │ ├── Csharp │ │ ├── CsharpFileLeaf.cs │ │ └── CsharpFolderComposite.cs │ ├── FolderComposite.cs │ ├── ProjectComponent.cs │ ├── ProjectComponentsExtensions.cs │ ├── Solution.cs │ ├── SourceProjects │ │ └── SourceProjectInfo.cs │ └── TestProjects │ │ ├── TestCase.cs │ │ ├── TestFile.cs │ │ ├── TestProject.cs │ │ └── TestProjectsInfo.cs │ ├── Reporters │ ├── BaselineReporter.cs │ ├── BroadcastReporter.cs │ ├── ClearTextReporter.cs │ ├── ClearTextTreeReporter.cs │ ├── ConsoleDotProgressReporter.cs │ ├── DashboardReporter.cs │ ├── FilteredMutantsLogger.cs │ ├── Html │ │ ├── Files │ │ │ └── mutation-report.html │ │ ├── HtmlReporter.cs │ │ └── RealTime │ │ │ ├── Events │ │ │ ├── SseEvent.cs │ │ │ └── SseEventType.cs │ │ │ ├── IRealTimeMutantHandler.cs │ │ │ ├── ISseServer.cs │ │ │ ├── RealTimeMutantHandler.cs │ │ │ └── SseServer.cs │ ├── Json │ │ ├── JsonReport.cs │ │ ├── JsonReportSerialization.cs │ │ ├── JsonReporter.cs │ │ ├── Location.cs │ │ ├── Position.cs │ │ ├── SourceFiles │ │ │ ├── JsonMutant.cs │ │ │ └── SourceFile.cs │ │ └── TestFiles │ │ │ ├── JsonTest.cs │ │ │ └── JsonTestFile.cs │ ├── MarkdownSummaryReporter.cs │ ├── Progress │ │ ├── ProgressBar.cs │ │ ├── ProgressBarReporter.cs │ │ ├── ProgressReporter.cs │ │ └── StopWatchProvider.cs │ ├── ReporterFactory.cs │ └── WebBrowserOpener │ │ ├── CrossPlatformBrowserOpener.cs │ │ └── IWebbrowserOpener.cs │ ├── Stryker.Core.csproj │ ├── StrykerRunResult.cs │ ├── StrykerRunner.cs │ ├── libman.json │ └── packages.lock.json ├── Stryker.DataCollector └── Stryker.DataCollector │ ├── CoverageCollector.cs │ ├── Helpers.cs │ ├── Stryker.DataCollector.csproj │ └── packages.lock.json ├── Stryker.Options ├── ExclusionPattern.cs ├── ExitCodes.cs ├── FilePattern.cs ├── IdProvider.cs ├── Options │ ├── BooleanValidationExtensions.cs │ ├── InputDefinition.cs │ ├── Inputs │ │ ├── AdditionalTimeoutInput.cs │ │ ├── AzureFileStorageSasInput.cs │ │ ├── AzureFileStorageUrlInput.cs │ │ ├── BasePathInput.cs │ │ ├── BaselineProviderInput.cs │ │ ├── BreakOnInitialTestFailureInput.cs │ │ ├── ConcurrencyInput.cs │ │ ├── ConfigurationInput.cs │ │ ├── CoverageAnalysisInput.cs │ │ ├── DashboardApiKeyInput.cs │ │ ├── DashboardUrlInput.cs │ │ ├── DevModeInput.cs │ │ ├── DiffIgnoreChangesInput.cs │ │ ├── DisableBailInput.cs │ │ ├── DisableMixMutantsInput.cs │ │ ├── FallbackVersionInput.cs │ │ ├── IgnoreMethodsInput.cs │ │ ├── IgnoreMutationsInput.cs │ │ ├── LanguageVersionInput.cs │ │ ├── LogToFileInput.cs │ │ ├── ModuleNameInput.cs │ │ ├── MsBuildPathInput.cs │ │ ├── MutateInput.cs │ │ ├── MutationLevelInput.cs │ │ ├── OpenReportEnabledInput.cs │ │ ├── OpenReportInput.cs │ │ ├── OutputPathInput.cs │ │ ├── ProjectNameInput.cs │ │ ├── ProjectVersionInput.cs │ │ ├── ReportFileNameInput.cs │ │ ├── ReportersInput.cs │ │ ├── SinceInput.cs │ │ ├── SinceTargetInput.cs │ │ ├── SolutionInput.cs │ │ ├── SourceProjectNameInput.cs │ │ ├── TargetFrameworkInput.cs │ │ ├── TestCaseFilterInput.cs │ │ ├── TestProjectsInput.cs │ │ ├── ThresholdBreakInput.cs │ │ ├── ThresholdHighInput.cs │ │ ├── ThresholdLowInput.cs │ │ ├── VerbosityInput.cs │ │ └── WithBaselineInput.cs │ ├── LogOptions.cs │ ├── StrykerInputs.cs │ ├── StrykerOptions.cs │ └── Thresholds.cs ├── Stryker.Configuration.csproj └── packages.lock.json ├── Stryker.RegexMutators ├── Stryker.RegexMutators.UnitTest │ ├── Mutators │ │ ├── AnchorRemovalMutatorTest.cs │ │ ├── CharacterClassChildRemovalMutatorTests.cs │ │ ├── CharacterClassNegationMutatorTest.cs │ │ ├── CharacterClassRangeMutatorTests.cs │ │ ├── CharacterClassShortHandNegationMutatorTest.cs │ │ ├── CharacterClassShorthandAnyCharMutatorTests.cs │ │ ├── CharacterClassShorthandNullificationMutatorTests.cs │ │ ├── CharacterClassToAnyCharMutatorTests.cs │ │ ├── GroupToNcGroupMutatorTests.cs │ │ ├── LookAroundMutatorTest.cs │ │ ├── QuantifierQuantityMutatorTest.cs │ │ ├── QuantifierReluctantAdditionMutatorTests.cs │ │ ├── QuantifierRemovalMutatorTest.cs │ │ ├── QuantifierShortMutatorTests.cs │ │ ├── QuantifierUnlimitedQuantityMutatorTest.cs │ │ ├── TestHelpers.cs │ │ └── UnicodeCharClassNegationMutatorTests.cs │ ├── RegexMutantOrchestratorTest.cs │ ├── Stryker.RegexMutators.UnitTest.csproj │ └── packages.lock.json └── Stryker.RegexMutators │ ├── Mutators │ ├── AnchorRemovalMutator.cs │ ├── CharacterClassChildRemovalMutator.cs │ ├── CharacterClassNegationMutator.cs │ ├── CharacterClassRangeMutator.cs │ ├── CharacterClassShorthandAnyCharMutator.cs │ ├── CharacterClassShorthandNegationMutator.cs │ ├── CharacterClassShorthandNullificationMutator.cs │ ├── CharacterClassToAnyCharMutator.cs │ ├── GroupToNcGroupMutator.cs │ ├── IRegexMutator.cs │ ├── LookAroundMutator.cs │ ├── QuantifierQuantityMutator.cs │ ├── QuantifierReluctantAdditionMutator.cs │ ├── QuantifierRemovalMutator.cs │ ├── QuantifierShortMutator.cs │ ├── QuantifierUnlimitedQuantityMutator.cs │ ├── RegexMutatorBase.cs │ └── UnicodeCharClassNegationMutator.cs │ ├── RegexMutantOrchestrator.cs │ ├── RegexMutation.cs │ ├── Stryker.RegexMutators.csproj │ └── packages.lock.json ├── Stryker.TestRunner.VsTest.UnitTest ├── CoverageCaptureTests.cs ├── CoverageCollectorTests.cs ├── Stryker.TestRunner.VsTest.UnitTest.csproj ├── VsTestMockingHelper.cs ├── VsTestRunnerPoolTests.cs ├── VsTextContextInformationTests.cs └── packages.lock.json ├── Stryker.TestRunner.VsTest ├── DiscoveryEventHandler.cs ├── Helpers │ └── VsTestHelper.cs ├── RunEventHandler.cs ├── Stryker.TestRunner.VsTest.csproj ├── StrykerVstestHostLauncher.cs ├── TestRun.cs ├── TestSet.cs ├── VsTestCase.cs ├── VsTestContextInformation.cs ├── VsTestDescription.cs ├── VsTestResult.cs ├── VsTestRunner.cs ├── VsTestRunnerPool.cs └── packages.lock.json ├── Stryker.TestRunner ├── Results │ ├── CoverageRunResult.cs │ └── TestRunResult.cs ├── Stryker.TestRunner.csproj ├── Tests │ ├── TestIdentifierList.cs │ └── WrappedGuidsEnumeration.cs └── packages.lock.json ├── Stryker.Utilities ├── Buildalyzer │ ├── Buildalyzer.cs │ ├── IAnalyzerResultCSharpExtensions.cs │ └── IAnalyzerResultExtensions.cs ├── EmbeddedResources │ ├── CrossPlatformAssemblyResolver.cs │ └── EmbeddedResourcesGenerator.cs ├── EnumExtension.cs ├── FilePathUtils.cs ├── Helpers │ ├── ITypeHandler.cs │ ├── TextSpanHelper.cs │ └── TypeBasedStrategy.cs ├── Logging │ └── ApplicationLogging.cs ├── Stryker.Utilities.csproj └── packages.lock.json └── Stryker.sln /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: "\U0001F41B Bug" 6 | assignees: '' 7 | --- 8 | 9 | **Describe the bug** 10 | A clear and concise description of what the bug is. 11 | 12 | **Logs** 13 | For us to best assist you in diagnosing the problem we would ask you to run stryker with the option `--log-to-file` or `-L` and to attach the resulting logs to the issue. 14 | 15 | **Expected behavior** 16 | A clear and concise description of what you expected to happen. 17 | 18 | **Desktop (please complete the following information):** 19 | - OS: [e.g. Windows] 20 | - Type of project [framework, core, xamarin] 21 | - Framework Version [e.g. core 2.2] 22 | - Stryker Version [e.g. beta 0.10.0] 23 | 24 | **Additional context** 25 | Add any other context about the problem here. 26 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Chat with the team 4 | url: https://join.slack.com/t/stryker-mutator/shared_invite/enQtOTUyMTYyNTg1NDQ0LTU4ODNmZDlmN2I3MmEyMTVhYjZlYmJkOThlNTY3NTM1M2QxYmM5YTM3ODQxYmJjY2YyYzllM2RkMmM1NjNjZjM 5 | about: Join us on slack if you want to chat with the stryker team or other users. 6 | - name: Ask a Question 7 | url: https://github.com/stryker-mutator/stryker-net/discussions/category_choices 8 | about: Please ask and answer questions here. 9 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: "\U0001F680 Feature request" 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/workflows/integration-test.yaml: -------------------------------------------------------------------------------- 1 | name: integration test macos m1 2 | run-name: e2e ${{ github.head_ref }} on m1 macos 3 | 4 | on: [pull_request] 5 | 6 | jobs: 7 | integration-test: 8 | runs-on: macos-14 9 | steps: 10 | - uses: actions/checkout@v4 11 | - uses: actions/setup-dotnet@v4 12 | with: 13 | dotnet-version: | 14 | 8.x 15 | 9.x 16 | - name: Run integration tests 17 | shell: pwsh 18 | run: .\integration-tests.ps1 19 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | All notable changes to this project will be documented in a package specific changelog file: 4 | 5 | * [Change log for stryker](/src/Stryker.Core/CHANGELOG.md) 6 | * [Change log for dotnet-stryker](/src/Stryker.CLI/CHANGELOG.md) 7 | -------------------------------------------------------------------------------- /ExampleProjects/FsharpMutateTestApp/boolMutateTestApp.Test/Program.fs: -------------------------------------------------------------------------------- 1 | module Program = let [] main _ = 0 2 | -------------------------------------------------------------------------------- /ExampleProjects/FsharpMutateTestApp/boolMutateTestApp.Test/Tests.fs: -------------------------------------------------------------------------------- 1 | module Tests 2 | 3 | open Xunit 4 | 5 | open Program 6 | 7 | [] 8 | let ``My test`` () = 9 | Assert.True(true) 10 | 11 | [] 12 | let ``inputTest`` () = 13 | Assert.Equal(true, fortesting(true)) 14 | -------------------------------------------------------------------------------- /ExampleProjects/FsharpMutateTestApp/boolMutateTestApp.Test/boolMutateTestApp.Test.fsproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | false 7 | false 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ExampleProjects/FsharpMutateTestApp/boolMutateTestApp/Program.fs: -------------------------------------------------------------------------------- 1 | open System 2 | 3 | let private key:ConsoleKeyInfo = Console.ReadKey() 4 | 5 | let keybool = 6 | key.KeyChar.CompareTo('1') 7 | 8 | let testing = 9 | match keybool with 10 | | 0 -> true 11 | | _ -> false 12 | 13 | let testingResults = 14 | match testing with 15 | | true -> "true" 16 | | false -> "false" 17 | 18 | let fortesting key = 19 | match key with 20 | | true -> true 21 | | false -> false 22 | 23 | [] 24 | let main _ = 25 | Console.WriteLine (fortesting true) 26 | 0 // return an integer exit code 27 | -------------------------------------------------------------------------------- /ExampleProjects/FsharpMutateTestApp/boolMutateTestApp/boolMutateTestApp.fsproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | netcoreapp3.1 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Assets/AboutAssets.txt: -------------------------------------------------------------------------------- 1 | Any raw assets you want to be deployed with your application can be placed in 2 | this directory (and child directories) and given a Build Action of "AndroidAsset". 3 | 4 | These files will be deployed with your package and will be accessible using Android's 5 | AssetManager, like this: 6 | 7 | public class ReadAsset : Activity 8 | { 9 | protected override void OnCreate (Bundle bundle) 10 | { 11 | base.OnCreate (bundle); 12 | 13 | InputStream input = Assets.Open ("my_asset.txt"); 14 | } 15 | } 16 | 17 | Additionally, some Android functions will automatically load asset files: 18 | 19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); 20 | -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Properties/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/drawable/icon_about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stryker-mutator/stryker-net/5a4424b7e90112cbaf8e2b99ed5e94e44d5fc5d8/ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/drawable/icon_about.png -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/drawable/icon_feed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stryker-mutator/stryker-net/5a4424b7e90112cbaf8e2b99ed5e94e44d5fc5d8/ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/drawable/icon_feed.png -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/drawable/xamarin_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stryker-mutator/stryker-net/5a4424b7e90112cbaf8e2b99ed5e94e44d5fc5d8/ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/drawable/xamarin_logo.png -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-anydpi-v26/icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-anydpi-v26/icon_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-hdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stryker-mutator/stryker-net/5a4424b7e90112cbaf8e2b99ed5e94e44d5fc5d8/ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-hdpi/icon.png -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-hdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stryker-mutator/stryker-net/5a4424b7e90112cbaf8e2b99ed5e94e44d5fc5d8/ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-hdpi/launcher_foreground.png -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-mdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stryker-mutator/stryker-net/5a4424b7e90112cbaf8e2b99ed5e94e44d5fc5d8/ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-mdpi/icon.png -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-mdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stryker-mutator/stryker-net/5a4424b7e90112cbaf8e2b99ed5e94e44d5fc5d8/ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-mdpi/launcher_foreground.png -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-xhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stryker-mutator/stryker-net/5a4424b7e90112cbaf8e2b99ed5e94e44d5fc5d8/ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-xhdpi/icon.png -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-xhdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stryker-mutator/stryker-net/5a4424b7e90112cbaf8e2b99ed5e94e44d5fc5d8/ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-xhdpi/launcher_foreground.png -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-xxhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stryker-mutator/stryker-net/5a4424b7e90112cbaf8e2b99ed5e94e44d5fc5d8/ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-xxhdpi/icon.png -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-xxhdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stryker-mutator/stryker-net/5a4424b7e90112cbaf8e2b99ed5e94e44d5fc5d8/ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-xxhdpi/launcher_foreground.png -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-xxxhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stryker-mutator/stryker-net/5a4424b7e90112cbaf8e2b99ed5e94e44d5fc5d8/ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-xxxhdpi/icon.png -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stryker-mutator/stryker-net/5a4424b7e90112cbaf8e2b99ed5e94e44d5fc5d8/ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | #3F51B5 5 | #303F9F 6 | #FF4081 7 | 8 | -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Android/Resources/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Tests/UnitTest1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Threading.Tasks; 4 | using Xamarin.Forms.Models; 5 | using Xamarin.Forms.Services; 6 | using Xunit; 7 | 8 | namespace Xamarin.Forms.Tests 9 | { 10 | public class UnitTest1 11 | { 12 | [Fact] 13 | public async Task Test1() 14 | { 15 | var x = new MockDataStore(); 16 | await x.AddItemAsync(new Item()); 17 | var count = (await x.GetItemsAsync()).Count(); 18 | Assert.True(count == 7); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms.Tests/Xamarin.Forms.Tests.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | false 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Xamarin.Forms; 3 | using Xamarin.Forms.Services; 4 | using Xamarin.Forms.Views; 5 | using Xamarin.Forms.Xaml; 6 | 7 | namespace Xamarin.Forms 8 | { 9 | public partial class App : Application 10 | { 11 | 12 | public App() 13 | { 14 | InitializeComponent(); 15 | 16 | DependencyService.Register(); 17 | MainPage = new AppShell(); 18 | } 19 | 20 | protected override void OnStart() 21 | { 22 | } 23 | 24 | protected override void OnSleep() 25 | { 26 | } 27 | 28 | protected override void OnResume() 29 | { 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms/AppShell.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Xamarin.Forms; 4 | using Xamarin.Forms.ViewModels; 5 | using Xamarin.Forms.Views; 6 | 7 | namespace Xamarin.Forms 8 | { 9 | public partial class AppShell : Xamarin.Forms.Shell 10 | { 11 | public AppShell() 12 | { 13 | InitializeComponent(); 14 | Routing.RegisterRoute(nameof(ItemDetailPage), typeof(ItemDetailPage)); 15 | Routing.RegisterRoute(nameof(NewItemPage), typeof(NewItemPage)); 16 | } 17 | 18 | private async void OnMenuItemClicked(object sender, EventArgs e) 19 | { 20 | await Shell.Current.GoToAsync("//LoginPage"); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using Xamarin.Forms.Xaml; 2 | 3 | [assembly: XamlCompilation(XamlCompilationOptions.Compile)] -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms/Models/Item.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Xamarin.Forms.Models 4 | { 5 | public class Item 6 | { 7 | public string Id { get; set; } 8 | public string Text { get; set; } 9 | public string Description { get; set; } 10 | } 11 | } -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms/Services/IDataStore.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Threading.Tasks; 4 | 5 | namespace Xamarin.Forms.Services 6 | { 7 | public interface IDataStore 8 | { 9 | Task AddItemAsync(T item); 10 | Task UpdateItemAsync(T item); 11 | Task DeleteItemAsync(string id); 12 | Task GetItemAsync(string id); 13 | Task> GetItemsAsync(bool forceRefresh = false); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms/ViewModels/AboutViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Input; 3 | using Xamarin.Essentials; 4 | using Xamarin.Forms; 5 | 6 | namespace Xamarin.Forms.ViewModels 7 | { 8 | public class AboutViewModel : BaseViewModel 9 | { 10 | public AboutViewModel() 11 | { 12 | Title = "About"; 13 | OpenWebCommand = new Command(async () => await Browser.OpenAsync("https://aka.ms/xamarin-quickstart")); 14 | } 15 | 16 | public ICommand OpenWebCommand { get; } 17 | } 18 | } -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms/ViewModels/LoginViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using Xamarin.Forms; 5 | using Xamarin.Forms.Views; 6 | 7 | namespace Xamarin.Forms.ViewModels 8 | { 9 | public class LoginViewModel : BaseViewModel 10 | { 11 | public Command LoginCommand { get; } 12 | 13 | public LoginViewModel() 14 | { 15 | LoginCommand = new Command(OnLoginClicked); 16 | } 17 | 18 | private async void OnLoginClicked(object obj) 19 | { 20 | // Prefixing with `//` switches to a different navigation stack instead of pushing to the active one 21 | await Shell.Current.GoToAsync($"//{nameof(AboutPage)}"); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms/Views/AboutPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel; 3 | using Xamarin.Forms; 4 | using Xamarin.Forms.Xaml; 5 | 6 | namespace Xamarin.Forms.Views 7 | { 8 | public partial class AboutPage : ContentPage 9 | { 10 | public AboutPage() 11 | { 12 | InitializeComponent(); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms/Views/ItemDetailPage.xaml: -------------------------------------------------------------------------------- 1 |  2 | 6 | 7 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms/Views/ItemDetailPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using Xamarin.Forms; 3 | using Xamarin.Forms.ViewModels; 4 | 5 | namespace Xamarin.Forms.Views 6 | { 7 | public partial class ItemDetailPage : ContentPage 8 | { 9 | public ItemDetailPage() 10 | { 11 | InitializeComponent(); 12 | BindingContext = new ItemDetailViewModel(); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms/Views/ItemsPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using Xamarin.Forms; 8 | using Xamarin.Forms.Models; 9 | using Xamarin.Forms.ViewModels; 10 | using Xamarin.Forms.Views; 11 | using Xamarin.Forms.Xaml; 12 | 13 | namespace Xamarin.Forms.Views 14 | { 15 | public partial class ItemsPage : ContentPage 16 | { 17 | ItemsViewModel _viewModel; 18 | 19 | public ItemsPage() 20 | { 21 | InitializeComponent(); 22 | 23 | BindingContext = _viewModel = new ItemsViewModel(); 24 | } 25 | 26 | protected override void OnAppearing() 27 | { 28 | base.OnAppearing(); 29 | _viewModel.OnAppearing(); 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /ExampleProjects/Xamarin.Forms/Xamarin.Forms/Views/LoginPage.xaml: -------------------------------------------------------------------------------- 1 |  2 | 9 | 10 | 11 |