diff --git a/packages/quicktype-core/src/MakeTransformations.ts b/packages/quicktype-core/src/MakeTransformations.ts index 664a8f7c9..015b81c96 100644 --- a/packages/quicktype-core/src/MakeTransformations.ts +++ b/packages/quicktype-core/src/MakeTransformations.ts @@ -80,8 +80,7 @@ function makeEnumTransformer( stringType: TypeRef, continuation?: Transformer, ): Transformer { - const sortedCases = Array.from(enumType.cases).sort(); - const caseTransformers = sortedCases.map( + const caseTransformers = Array.from(enumType.cases).map( (c) => new StringMatchTransformer( graph, diff --git a/test/unit/enum-order.test.ts b/test/unit/enum-order.test.ts index da930ac15..deaade5b4 100644 --- a/test/unit/enum-order.test.ts +++ b/test/unit/enum-order.test.ts @@ -1,23 +1,39 @@ -import { - InputData, - JSONSchemaInput, - quicktype, -} from "../../packages/quicktype-core/src/index.js"; +import { InputData, JSONSchemaInput, quicktype } from "quicktype-core"; import { expect, test } from "vitest"; -const schema = JSON.stringify({ - $schema: "http://json-schema.org/draft-04/schema#", - title: "Test", - type: "object", - properties: { - errorCode: { +test("preserves JSON Schema enum case order (C#)", async () => { + const schemaInput = new JSONSchemaInput(undefined); + await schemaInput.addSource({ + name: "DaySchema", + schema: JSON.stringify({ + $schema: "http://json-schema.org/draft-07/schema#", type: "string", - enum: ["B", "A", "E"], - }, - }, + enum: ["Monday", "Tuesday", "Friday", "Sunday"], + }), + }); + const inputData = new InputData(); + inputData.addInput(schemaInput); + + const result = await quicktype({ inputData, lang: "csharp" }); + + expect(result.lines.join("\n")).toContain( + "public enum DaySchemaEnum { Monday, Tuesday, Friday, Sunday };", + ); }); -test("preserves JSON Schema enum case order", async () => { +test("preserves JSON Schema enum case order (C++)", async () => { + const schema = JSON.stringify({ + $schema: "http://json-schema.org/draft-04/schema#", + title: "Test", + type: "object", + properties: { + errorCode: { + type: "string", + enum: ["B", "A", "E"], + }, + }, + }); + const schemaInput = new JSONSchemaInput(undefined); await schemaInput.addSource({ name: "Test", schema });