Files
MsystechandClaude Fable 5 16c07f48dc 초기 커밋: SheetMe 서식생성기 (P0~P5 완료 상태)
레거시 서식생성기(VB.NET WinForms) 대체용 C#/.NET 10 WPF 디자이너.
기준선: 실DB 활성 디자인 1,271건 왕복 의미론 diff 0 / 예외 0, 단위 테스트 49/49.

이 커밋에 함께 포함된 자격증명 분리:
- appsettings.json 을 __HOST__/__PASSWORD__ 플레이스홀더로 전환
- 실접속 정보는 appsettings.Development.json 으로 분리(.gitignore 제외,
  csproj Debug 조건부 복사라 Release 산출물에 실리지 않음)
- ConfigLoader 를 환경변수 > Development > appsettings 순 레이어링으로 변경,
  미치환 플레이스홀더는 '미설정'으로 간주

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 17:20:22 +09:00

44 lines
1.6 KiB
C#

using SheetMe.Core.Serialization;
namespace SheetMe.Core.Tests;
/// <summary>JSON 부 포맷 테스트 — 레거시 XML 과의 상호 변환 무손실성.</summary>
[TestClass]
public sealed class FormJsonTests
{
private static string SamplePath
=> Path.Combine(AppContext.BaseDirectory, "Assets", "sheetdesign_sample.xml");
/// <summary>XML → 모델 → JSON → 모델 → XML 전체 왕복 — 의미론 diff 0</summary>
[TestMethod]
public void FullRoundTrip_XmlToJsonToXml_NoSemanticDiff()
{
var original = File.ReadAllText(SamplePath);
var xmlSerializer = new LegacyXmlSerializer();
var jsonSerializer = new FormJsonSerializer();
var document = xmlSerializer.Read(original);
var json = jsonSerializer.Write(document);
var restored = jsonSerializer.Read(json);
var rewrittenXml = xmlSerializer.Write(restored);
var diffs = XmlSemanticDiff.Compare(original, rewrittenXml);
Assert.AreEqual(0, diffs.Count,
"XML→JSON→XML 왕복 의미론 diff 발생:\n" + string.Join("\n", diffs));
}
/// <summary>JSON 이중 직렬화 안정성 — 두 번째 출력이 첫 번째와 동일</summary>
[TestMethod]
public void JsonRoundTrip_IsStable()
{
var xmlSerializer = new LegacyXmlSerializer();
var jsonSerializer = new FormJsonSerializer();
var document = xmlSerializer.Read(File.ReadAllText(SamplePath));
var first = jsonSerializer.Write(document);
var second = jsonSerializer.Write(jsonSerializer.Read(first));
Assert.AreEqual(first, second, "JSON 왕복이 안정적이지 않습니다.");
}
}