diff --git a/CLAUDE.md b/CLAUDE.md index d502c55..96dab05 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,14 +4,15 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## Project Overview -Schema is a C# library for defining and managing data structure schemas. It consists of seven projects: +Schema is a C# library for defining and managing data structure schemas. It consists of eight projects: - **Schema** - Core library providing schema definition types (classes, enums, members, types) - **Schema.Test** - MSTest unit tests for the core library - **Schema.Cpp** - The C++ generator, in its own project because `ktsu.Coder` ships no `net8.0` - **Schema.Cpp.Test** - Its tests, including the three acceptance tests against Holotype's target document and one that compiles the generated reflection table - **Schema.Editor** - ImGui-based visual editor application for creating and editing `.schema.json` files -- **Schema.Editor.Test** - Headless UI tests for the editor, driven through `ktsu.ImGui.App.Testing` +- **Schema.Editor.Test** - The editor's tests that need no frame: the recent-files list and reading and writing the document on disk. Ordinary unit tests, so they run on every platform - which is the point of keeping them out of the suite below, since those are the two parts of the editor whose behaviour differs by operating system +- **tests/Schema.Editor.UITests** - The editor's tests that drive real frames through `EditorHarness`/`WidgetHarness`. The shared `dotnet.yml` runs it on Linux only, as it does every other ktsu UI suite: the CPU rasterizer measures the same on any host, so the other platforms pay the cost without learning anything. **Both halves of the path are load-bearing** - `ktsubuild --exclude "**/*.UITests/*"` needs the `.UITests` suffix *and* a leading directory, because its `**/` does not match zero segments. A project at the repository root is never excluded, however it is named - **Schema.Tool** - The `dotnet tool` (`kschema`) that validates schemas and runs their code generators ## Build Commands @@ -519,8 +520,8 @@ as the property initialiser as well, so a generated instance starts at it. - `Schema.Editor/EditorHost.cs` - Builds the `ImGuiAppConfig`; `CreateConfig` is what the tests drive too - `Schema.Editor/EditorTheme.cs` - The ktsu.ThemeProvider theme, and the one definition of how a validation issue is coloured - `Schema.Editor/Program.cs` - The entry point, and the only file excluded from coverage measurement -- `Schema.Editor.Test/EditorHarness.cs` - Runs a real editor headlessly, frames advanced by the test -- `Schema.Editor.Test/WidgetHarness.cs` - A headless frame containing only the widget under test, and an editor for a panel that is one +- `tests/Schema.Editor.UITests/EditorHarness.cs` - Runs a real editor headlessly, frames advanced by the test +- `tests/Schema.Editor.UITests/WidgetHarness.cs` - A headless frame containing only the widget under test, and an editor for a panel that is one ### Addressing the editor from a test diff --git a/README.md b/README.md index 3a52f62..ee62bcf 100644 --- a/README.md +++ b/README.md @@ -14,14 +14,15 @@ A C# library for defining, managing, and editing data structure schemas with a r **ktsu.Schema** lets you define structured data models programmatically or visually, then serialize them to `.schema.json` files (documented in the [schema file format reference](docs/schema-format.md)). It provides a foundation for code generation, data validation, and tooling that needs to understand your data structures at a metadata level. -The solution contains seven projects: +The solution contains eight projects: - **Schema** - Core library with schema definition types, a rich type system, and JSON serialization - **Schema.Test** - Unit tests for the core library - **Schema.Cpp** - The C++ generator, published separately as [`ktsu.Schema.Cpp`](https://nuget.org/packages/ktsu.Schema.Cpp) - **Schema.Cpp.Test** - Its tests, including acceptance tests against a real target's document - **Schema.Editor** - ImGui-based desktop application for visual schema editing -- **Schema.Editor.Test** - Headless UI tests that drive the editor with no window or display +- **Schema.Editor.Test** - The editor tests that need no frame: recent files, and reading and writing the document +- **tests/Schema.Editor.UITests** - Headless UI tests that drive the editor with no window or display - **Schema.Tool** - Command line entry point for validating schemas and running their code generators `Schema.Cpp` is a separate package rather than part of the library because the AST it builds on diff --git a/Schema.Cpp.Test/ExemplarSemanticTypeTests.cs b/Schema.Cpp.Test/ExemplarSemanticTypeTests.cs index 26a9bf9..d3c676e 100644 --- a/Schema.Cpp.Test/ExemplarSemanticTypeTests.cs +++ b/Schema.Cpp.Test/ExemplarSemanticTypeTests.cs @@ -55,6 +55,7 @@ public sealed class ExemplarSemanticTypeTests #pragma once + #include #include #include diff --git a/Schema.Cpp/AssemblyInfo.cs b/Schema.Cpp/AssemblyInfo.cs index 33c4c88..327586c 100644 --- a/Schema.Cpp/AssemblyInfo.cs +++ b/Schema.Cpp/AssemblyInfo.cs @@ -4,5 +4,6 @@ // KTSU0002 asks a non-test project to expose its internals to the repository's test projects // rather than to the one that happens to need them. [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ktsu.Schema.Test")] +[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ktsu.Schema.Editor.UITests")] [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ktsu.Schema.Editor.Test")] [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ktsu.Schema.Cpp.Test")] diff --git a/Schema.Cpp/CppFileBuilder.cs b/Schema.Cpp/CppFileBuilder.cs index f333f0d..6d74192 100644 --- a/Schema.Cpp/CppFileBuilder.cs +++ b/Schema.Cpp/CppFileBuilder.cs @@ -147,6 +147,13 @@ public SourceFile SemanticType(SchemaSemanticType semanticType) } declaration.Members.Add(Comparison(name, "==", "bool")); + + // A defaulted <=> answers with one of the ordering types, and those live in . + // libstdc++ happens to have declared them by the time this header is read and libc++ does + // not, so without this the generated type compiles under GCC and is refused by Clang - + // which is exactly the kind of difference a generator must not leave to whoever includes + // it. + mapper.Require(""); declaration.Members.Add(Comparison(name, "<=>", "auto")); declaration.Members.Add(new FieldDeclaration(ValueField, UnderlyingAlias) { Visibility = Visibility.Private }); diff --git a/Schema.Editor.Test/Schema.Editor.Test.csproj b/Schema.Editor.Test/Schema.Editor.Test.csproj index 1f6ef83..55eff6e 100644 --- a/Schema.Editor.Test/Schema.Editor.Test.csproj +++ b/Schema.Editor.Test/Schema.Editor.Test.csproj @@ -11,11 +11,6 @@ - - - - diff --git a/Schema.Editor/AppData.cs b/Schema.Editor/AppData.cs index e0c138a..f0d0a43 100644 --- a/Schema.Editor/AppData.cs +++ b/Schema.Editor/AppData.cs @@ -4,6 +4,7 @@ // ktsu.Sdk's KTSU0002 requires a non-test project to expose its internals to the repository's test // projects, and there are two of them now; which of the two a given project actually needs is not // what the rule is checking. +[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ktsu.Schema.Editor.UITests")] [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ktsu.Schema.Editor.Test")] [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ktsu.Schema.Test")] diff --git a/Schema.Tool/Program.cs b/Schema.Tool/Program.cs index 862b436..3669b4f 100644 --- a/Schema.Tool/Program.cs +++ b/Schema.Tool/Program.cs @@ -5,6 +5,7 @@ // projects, and there are two of them now; which of the two a given project actually needs is not // what the rule is checking. [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ktsu.Schema.Test")] +[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ktsu.Schema.Editor.UITests")] [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ktsu.Schema.Editor.Test")] namespace ktsu.Schema.Tool; diff --git a/Schema.sln b/Schema.sln index a4011b9..8f1a2db 100644 --- a/Schema.sln +++ b/Schema.sln @@ -11,12 +11,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Schema.Editor", "Schema.Edi EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Schema.Tool", "Schema.Tool\Schema.Tool.csproj", "{1EBD8E07-A2A3-4091-8748-ECFEB1D301F0}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Schema.Editor.Test", "Schema.Editor.Test\Schema.Editor.Test.csproj", "{31DEE39F-3542-4B65-B744-74243D28D878}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Schema.Editor.UITests", "tests\Schema.Editor.UITests\Schema.Editor.UITests.csproj", "{31DEE39F-3542-4B65-B744-74243D28D878}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Schema.Cpp", "Schema.Cpp\Schema.Cpp.csproj", "{93D1BF5F-D2C4-46C4-A783-2F6F4B7AA6B7}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Schema.Cpp.Test", "Schema.Cpp.Test\Schema.Cpp.Test.csproj", "{B331523C-35C3-456A-B5DA-678A6144A090}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Schema.Editor.Test", "Schema.Editor.Test\Schema.Editor.Test.csproj", "{5562D744-2ECE-47B5-9AB8-EA5F659ABAE8}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -111,6 +113,18 @@ Global {B331523C-35C3-456A-B5DA-678A6144A090}.Release|x64.Build.0 = Release|Any CPU {B331523C-35C3-456A-B5DA-678A6144A090}.Release|x86.ActiveCfg = Release|Any CPU {B331523C-35C3-456A-B5DA-678A6144A090}.Release|x86.Build.0 = Release|Any CPU + {5562D744-2ECE-47B5-9AB8-EA5F659ABAE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5562D744-2ECE-47B5-9AB8-EA5F659ABAE8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5562D744-2ECE-47B5-9AB8-EA5F659ABAE8}.Debug|x64.ActiveCfg = Debug|Any CPU + {5562D744-2ECE-47B5-9AB8-EA5F659ABAE8}.Debug|x64.Build.0 = Debug|Any CPU + {5562D744-2ECE-47B5-9AB8-EA5F659ABAE8}.Debug|x86.ActiveCfg = Debug|Any CPU + {5562D744-2ECE-47B5-9AB8-EA5F659ABAE8}.Debug|x86.Build.0 = Debug|Any CPU + {5562D744-2ECE-47B5-9AB8-EA5F659ABAE8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5562D744-2ECE-47B5-9AB8-EA5F659ABAE8}.Release|Any CPU.Build.0 = Release|Any CPU + {5562D744-2ECE-47B5-9AB8-EA5F659ABAE8}.Release|x64.ActiveCfg = Release|Any CPU + {5562D744-2ECE-47B5-9AB8-EA5F659ABAE8}.Release|x64.Build.0 = Release|Any CPU + {5562D744-2ECE-47B5-9AB8-EA5F659ABAE8}.Release|x86.ActiveCfg = Release|Any CPU + {5562D744-2ECE-47B5-9AB8-EA5F659ABAE8}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Schema/AssemblyInfo.cs b/Schema/AssemblyInfo.cs index c139378..b748c3e 100644 --- a/Schema/AssemblyInfo.cs +++ b/Schema/AssemblyInfo.cs @@ -5,4 +5,5 @@ // projects, and there are two of them now; which of the two a given project actually needs is not // what the rule is checking. [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ktsu.Schema.Test")] +[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ktsu.Schema.Editor.UITests")] [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("ktsu.Schema.Editor.Test")] diff --git a/docs/README.md b/docs/README.md index 0a64e95..06f0dce 100644 --- a/docs/README.md +++ b/docs/README.md @@ -64,7 +64,7 @@ if (SchemaSerializer.TryDeserialize(File.ReadAllText("user.schema.json"), out Sc - **[Schema](api/schema-core.md)** - Core library containing the schema definition system - **[Schema.Editor](features/schema-editor.md)** - Visual editor application - **Schema.Tool** - Command line validator and code generator runner -- **Schema.Test** / **Schema.Editor.Test** - MSTest suites for the library and the editor (see the [development guide](development/README.md)) +- **Schema.Test** / **Schema.Editor.Test** / **Schema.Editor.UITests** - MSTest suites for the library and the editor (see the [development guide](development/README.md)) ## Documentation diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index fac11ef..74e0134 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -38,7 +38,7 @@ time. For what the library actually does, the tests in recent-files list. - **CLI** — `Schema.Tool` validates a schema or runs its code generators, exiting non-zero on errors so it can gate a build. -- **Editor tests** — `Schema.Editor.Test` drives the editor headlessly through +- **Editor tests** — `tests/Schema.Editor.UITests` drives the editor headlessly through `ktsu.ImGui.App.Testing`, which rasterizes in software and injects input straight into ImGui, so the editor's real draw code runs on a continuous integration runner with no window or display. - **CI/CD** — GitHub Actions with build, multi-framework test, SonarCloud analysis, CodeQL, NuGet @@ -103,7 +103,7 @@ Outstanding: editor packaging via winget, and cutting the v2.0 milestone. Not one of the original phases; added when the editor grew large enough to need one. -`Schema.Editor.Test` ([#128](https://github.com/ktsu-dev/Schema/issues/128)) drives the editor +`tests/Schema.Editor.UITests` ([#128](https://github.com/ktsu-dev/Schema/issues/128)) drives the editor headlessly. It covers the recent-files list, the commit-once text field, the unsaved-changes guard and the save-then-continue sequence, validation debouncing and click-to-navigate, and — by addressing widgets through the names the editor marks them with — the schema tree, its context diff --git a/docs/development/README.md b/docs/development/README.md index 25341a4..de58d42 100644 --- a/docs/development/README.md +++ b/docs/development/README.md @@ -46,7 +46,8 @@ dotnet run --project Schema.Editor | `Schema/` | Core schema definition library | | `Schema.Test/` | MSTest unit tests for the library | | `Schema.Editor/` | ImGui-based visual editor | -| `Schema.Editor.Test/` | Headless UI tests for the editor | +| `Schema.Editor.Test/` | The editor tests that need no frame | +| `tests/Schema.Editor.UITests/` | Headless UI tests for the editor | | `Schema.Tool/` | Command line validator and generator | | `docs/` | Markdown documentation | | `scripts/` | Build automation (PSBuild) | @@ -69,7 +70,7 @@ Plain unit tests over the core library, run against every framework it publishes suites (`SchemaTests`, `SchemaClassTests`, `SchemaEnumTests`, `TypeSystemTests`, `SchemaSerializerTests`, `AddClassFromTypeTests`) show the conventions in use. -### The editor — `Schema.Editor.Test` +### The editor — `tests/Schema.Editor.UITests` The editor's code is immediate-mode draw calls, so none of it executes without a live ImGui context. `ktsu.ImGui.App.Testing` supplies one with no window, no display and no GPU: it rasterizes diff --git a/Schema.Editor.Test/AssemblyInfo.cs b/tests/Schema.Editor.UITests/AssemblyInfo.cs similarity index 100% rename from Schema.Editor.Test/AssemblyInfo.cs rename to tests/Schema.Editor.UITests/AssemblyInfo.cs diff --git a/Schema.Editor.Test/ClassGraphTests.cs b/tests/Schema.Editor.UITests/ClassGraphTests.cs similarity index 99% rename from Schema.Editor.Test/ClassGraphTests.cs rename to tests/Schema.Editor.UITests/ClassGraphTests.cs index b3b2a33..098dbe5 100644 --- a/Schema.Editor.Test/ClassGraphTests.cs +++ b/tests/Schema.Editor.UITests/ClassGraphTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using System.Linq; using System.Numerics; diff --git a/Schema.Editor.Test/CodeGeneratorPanelTests.cs b/tests/Schema.Editor.UITests/CodeGeneratorPanelTests.cs similarity index 99% rename from Schema.Editor.Test/CodeGeneratorPanelTests.cs rename to tests/Schema.Editor.UITests/CodeGeneratorPanelTests.cs index 1d2a05c..53c19c4 100644 --- a/Schema.Editor.Test/CodeGeneratorPanelTests.cs +++ b/tests/Schema.Editor.UITests/CodeGeneratorPanelTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using System; using System.IO; diff --git a/Schema.Editor.Test/DiagnosticsPanelTests.cs b/tests/Schema.Editor.UITests/DiagnosticsPanelTests.cs similarity index 99% rename from Schema.Editor.Test/DiagnosticsPanelTests.cs rename to tests/Schema.Editor.UITests/DiagnosticsPanelTests.cs index 9842348..3d2246e 100644 --- a/Schema.Editor.Test/DiagnosticsPanelTests.cs +++ b/tests/Schema.Editor.UITests/DiagnosticsPanelTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using System.Linq; diff --git a/Schema.Editor.Test/DiagnosticsTests.cs b/tests/Schema.Editor.UITests/DiagnosticsTests.cs similarity index 99% rename from Schema.Editor.Test/DiagnosticsTests.cs rename to tests/Schema.Editor.UITests/DiagnosticsTests.cs index 0a0b4fb..2b3ba72 100644 --- a/Schema.Editor.Test/DiagnosticsTests.cs +++ b/tests/Schema.Editor.UITests/DiagnosticsTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using System.Linq; diff --git a/Schema.Editor.Test/DocumentGuardTests.cs b/tests/Schema.Editor.UITests/DocumentGuardTests.cs similarity index 99% rename from Schema.Editor.Test/DocumentGuardTests.cs rename to tests/Schema.Editor.UITests/DocumentGuardTests.cs index 10d5e95..69e605d 100644 --- a/Schema.Editor.Test/DocumentGuardTests.cs +++ b/tests/Schema.Editor.UITests/DocumentGuardTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using System; using System.IO; diff --git a/Schema.Editor.Test/EditFieldTests.cs b/tests/Schema.Editor.UITests/EditFieldTests.cs similarity index 99% rename from Schema.Editor.Test/EditFieldTests.cs rename to tests/Schema.Editor.UITests/EditFieldTests.cs index 7f03b1f..13d7aa9 100644 --- a/Schema.Editor.Test/EditFieldTests.cs +++ b/tests/Schema.Editor.UITests/EditFieldTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using System; using System.Numerics; diff --git a/Schema.Editor.Test/EditorHarness.cs b/tests/Schema.Editor.UITests/EditorHarness.cs similarity index 99% rename from Schema.Editor.Test/EditorHarness.cs rename to tests/Schema.Editor.UITests/EditorHarness.cs index e30e232..670c990 100644 --- a/Schema.Editor.Test/EditorHarness.cs +++ b/tests/Schema.Editor.UITests/EditorHarness.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using System; using System.IO.Abstractions.TestingHelpers; diff --git a/Schema.Editor.Test/ElementPanelTests.cs b/tests/Schema.Editor.UITests/ElementPanelTests.cs similarity index 99% rename from Schema.Editor.Test/ElementPanelTests.cs rename to tests/Schema.Editor.UITests/ElementPanelTests.cs index c7d7b88..fc7f19b 100644 --- a/Schema.Editor.Test/ElementPanelTests.cs +++ b/tests/Schema.Editor.UITests/ElementPanelTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using System; using System.IO; diff --git a/Schema.Editor.Test/FileBrowserTests.cs b/tests/Schema.Editor.UITests/FileBrowserTests.cs similarity index 99% rename from Schema.Editor.Test/FileBrowserTests.cs rename to tests/Schema.Editor.UITests/FileBrowserTests.cs index 490fb54..3aad4fd 100644 --- a/Schema.Editor.Test/FileBrowserTests.cs +++ b/tests/Schema.Editor.UITests/FileBrowserTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using System; using System.IO; diff --git a/Schema.Editor.Test/HarnessSmokeTests.cs b/tests/Schema.Editor.UITests/HarnessSmokeTests.cs similarity index 95% rename from Schema.Editor.Test/HarnessSmokeTests.cs rename to tests/Schema.Editor.UITests/HarnessSmokeTests.cs index a26da4f..ca15ed8 100644 --- a/Schema.Editor.Test/HarnessSmokeTests.cs +++ b/tests/Schema.Editor.UITests/HarnessSmokeTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; /// /// That the harness itself works: without these, a failure anywhere else is ambiguous between the diff --git a/Schema.Editor.Test/MemberPanelTests.cs b/tests/Schema.Editor.UITests/MemberPanelTests.cs similarity index 98% rename from Schema.Editor.Test/MemberPanelTests.cs rename to tests/Schema.Editor.UITests/MemberPanelTests.cs index 01790d6..9fb5ccf 100644 --- a/Schema.Editor.Test/MemberPanelTests.cs +++ b/tests/Schema.Editor.UITests/MemberPanelTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using System.Linq; diff --git a/Schema.Editor.Test/MemberSemanticsTests.cs b/tests/Schema.Editor.UITests/MemberSemanticsTests.cs similarity index 99% rename from Schema.Editor.Test/MemberSemanticsTests.cs rename to tests/Schema.Editor.UITests/MemberSemanticsTests.cs index af7527a..635211b 100644 --- a/Schema.Editor.Test/MemberSemanticsTests.cs +++ b/tests/Schema.Editor.UITests/MemberSemanticsTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using ktsu.Schema.Models; using ktsu.Schema.Models.Metadata; diff --git a/Schema.Editor.Test/MenuTests.cs b/tests/Schema.Editor.UITests/MenuTests.cs similarity index 99% rename from Schema.Editor.Test/MenuTests.cs rename to tests/Schema.Editor.UITests/MenuTests.cs index 79a45c0..5a56212 100644 --- a/Schema.Editor.Test/MenuTests.cs +++ b/tests/Schema.Editor.UITests/MenuTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using System; using System.IO; diff --git a/tests/Schema.Editor.UITests/Schema.Editor.UITests.csproj b/tests/Schema.Editor.UITests/Schema.Editor.UITests.csproj new file mode 100644 index 0000000..3d2bab3 --- /dev/null +++ b/tests/Schema.Editor.UITests/Schema.Editor.UITests.csproj @@ -0,0 +1,39 @@ + + + + + + true + + + + + + + + + + + + + + + + + + 18.8.0 + + + + + + + + net10.0 + + + diff --git a/Schema.Editor.Test/ShortcutTests.cs b/tests/Schema.Editor.UITests/ShortcutTests.cs similarity index 99% rename from Schema.Editor.Test/ShortcutTests.cs rename to tests/Schema.Editor.UITests/ShortcutTests.cs index 3411969..9abb911 100644 --- a/Schema.Editor.Test/ShortcutTests.cs +++ b/tests/Schema.Editor.UITests/ShortcutTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using System; using System.IO; diff --git a/Schema.Editor.Test/ThemeBrowserTests.cs b/tests/Schema.Editor.UITests/ThemeBrowserTests.cs similarity index 97% rename from Schema.Editor.Test/ThemeBrowserTests.cs rename to tests/Schema.Editor.UITests/ThemeBrowserTests.cs index da472e5..e774f86 100644 --- a/Schema.Editor.Test/ThemeBrowserTests.cs +++ b/tests/Schema.Editor.UITests/ThemeBrowserTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; /// /// Picking a theme from the browser the Theme menu opens. diff --git a/Schema.Editor.Test/ThemeTests.cs b/tests/Schema.Editor.UITests/ThemeTests.cs similarity index 98% rename from Schema.Editor.Test/ThemeTests.cs rename to tests/Schema.Editor.UITests/ThemeTests.cs index 1099d1d..6dc99b2 100644 --- a/Schema.Editor.Test/ThemeTests.cs +++ b/tests/Schema.Editor.UITests/ThemeTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; /// /// Which ktsu.ThemeProvider theme the editor runs under, and where that choice comes from. diff --git a/Schema.Editor.Test/TreeContextMenuTests.cs b/tests/Schema.Editor.UITests/TreeContextMenuTests.cs similarity index 99% rename from Schema.Editor.Test/TreeContextMenuTests.cs rename to tests/Schema.Editor.UITests/TreeContextMenuTests.cs index a2e6beb..35381ae 100644 --- a/Schema.Editor.Test/TreeContextMenuTests.cs +++ b/tests/Schema.Editor.UITests/TreeContextMenuTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using System.Linq; diff --git a/Schema.Editor.Test/TreeEditingTests.cs b/tests/Schema.Editor.UITests/TreeEditingTests.cs similarity index 99% rename from Schema.Editor.Test/TreeEditingTests.cs rename to tests/Schema.Editor.UITests/TreeEditingTests.cs index 870a64b..b8b279b 100644 --- a/Schema.Editor.Test/TreeEditingTests.cs +++ b/tests/Schema.Editor.UITests/TreeEditingTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using System.Linq; diff --git a/Schema.Editor.Test/TreeNavigationTests.cs b/tests/Schema.Editor.UITests/TreeNavigationTests.cs similarity index 98% rename from Schema.Editor.Test/TreeNavigationTests.cs rename to tests/Schema.Editor.UITests/TreeNavigationTests.cs index e297391..6d6e3e1 100644 --- a/Schema.Editor.Test/TreeNavigationTests.cs +++ b/tests/Schema.Editor.UITests/TreeNavigationTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using ktsu.Schema.Models; using ktsu.Schema.Models.Names; diff --git a/Schema.Editor.Test/TreeRowWidthTests.cs b/tests/Schema.Editor.UITests/TreeRowWidthTests.cs similarity index 98% rename from Schema.Editor.Test/TreeRowWidthTests.cs rename to tests/Schema.Editor.UITests/TreeRowWidthTests.cs index 56fdf8d..78d1469 100644 --- a/Schema.Editor.Test/TreeRowWidthTests.cs +++ b/tests/Schema.Editor.UITests/TreeRowWidthTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using ktsu.ImGui.App.Testing; using ktsu.Schema.Models; diff --git a/Schema.Editor.Test/ValidationMarkingTests.cs b/tests/Schema.Editor.UITests/ValidationMarkingTests.cs similarity index 98% rename from Schema.Editor.Test/ValidationMarkingTests.cs rename to tests/Schema.Editor.UITests/ValidationMarkingTests.cs index 16c3ef4..cb3f146 100644 --- a/Schema.Editor.Test/ValidationMarkingTests.cs +++ b/tests/Schema.Editor.UITests/ValidationMarkingTests.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using ktsu.ImGui.App.Testing; using ktsu.Schema.Models; diff --git a/Schema.Editor.Test/WidgetHarness.cs b/tests/Schema.Editor.UITests/WidgetHarness.cs similarity index 98% rename from Schema.Editor.Test/WidgetHarness.cs rename to tests/Schema.Editor.UITests/WidgetHarness.cs index d81ad59..fe8e26c 100644 --- a/Schema.Editor.Test/WidgetHarness.cs +++ b/tests/Schema.Editor.UITests/WidgetHarness.cs @@ -1,6 +1,6 @@ // Copyright (c) 2023-2026 ktsu-dev contributors -namespace ktsu.Schema.Editor.Test; +namespace ktsu.Schema.Editor.UITests; using System; using System.IO.Abstractions.TestingHelpers;