Al-HUWAITI Shell
Al-huwaiti


Server : LiteSpeed
System : Linux in-mum-web1949.main-hosting.eu 5.14.0-503.40.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Mon May 5 06:06:04 EDT 2025 x86_64
User : u595547767 ( 595547767)
PHP Version : 7.4.33
Disable Function : NONE
Directory :  /opt/go/pkg/mod/github.com/go-openapi/analysis@v0.23.0/internal/flatten/sortref/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/go/pkg/mod/github.com/go-openapi/analysis@v0.23.0/internal/flatten/sortref/sort_ref_test.go
package sortref

import (
	"testing"

	_ "github.com/go-openapi/analysis/internal/antest"
	"github.com/stretchr/testify/assert"
)

func TestSortRef_DepthFirstSort(t *testing.T) {
	values := []string{
		"#/definitions/datedTag/allOf/0",
		"#/definitions/pneumonoultramicroscopicsilicovolcanoconiosisAntidisestablishmentarianism",
		"#/definitions/namedThing",
		"#/definitions/datedTag/properties/id",
		"#/paths/~1some~1where~1{id}/get/responses/200/schema",
		"#/definitions/tags/additionalProperties/properties/id",
		"#/parameters/someParam/schema",
		"#/definitions/records/items/0/properties/createdAt",
		"#/definitions/datedTaggedRecords",
		"#/paths/~1some~1where~1{id}/get/responses/default/schema/properties/createdAt",
		"#/definitions/namedAgain",
		"#/definitions/tags",
		"#/paths/~1some~1where~1{id}/get/responses/404/schema",
		"#/definitions/datedRecords/items/1",
		"#/definitions/records/items/0",
		"#/definitions/datedTaggedRecords/items/0",
		"#/definitions/datedTag/allOf/1",
		"#/definitions/otherRecords/items/properties/createdAt",
		"#/responses/someResponse/schema/properties/createdAt",
		"#/definitions/namedAgain/properties/id",
		"#/definitions/datedTag",
		"#/paths/~1some~1where~1{id}/parameters/1/schema",
		"#/parameters/someParam/schema/properties/createdAt",
		"#/paths/~1some~1where~1{id}/get/parameters/2/schema/properties/createdAt",
		"#/definitions/otherRecords",
		"#/definitions/datedTaggedRecords/items/1",
		"#/definitions/datedTaggedRecords/items/1/properties/createdAt",
		"#/definitions/otherRecords/items",
		"#/definitions/datedRecords/items/0",
		"#/paths/~1some~1where~1{id}/get/responses/200/schema/properties/id",
		"#/paths/~1some~1where~1{id}/get/responses/200/schema/properties/value",
		"#/definitions/records",
		"#/definitions/namedThing/properties/name/properties/id",
		"#/definitions/datedTaggedRecords/additionalItems/properties/id",
		"#/definitions/datedTaggedRecords/additionalItems/properties/value",
		"#/definitions/datedRecords",
		"#/definitions/datedTag/properties/value",
		"#/definitions/pneumonoultramicroscopicsilicovolcanoconiosisAntidisestablishmentarianism/properties/floccinaucinihilipilificationCreatedAt",
		"#/definitions/datedRecords/items/1/properties/createdAt",
		"#/definitions/tags/additionalProperties",
		"#/paths/~1some~1where~1{id}/parameters/1/schema/properties/createdAt",
		"#/definitions/namedThing/properties/name",
		"#/paths/~1some~1where~1{id}/get/responses/default/schema",
		"#/definitions/tags/additionalProperties/properties/value",
		"#/responses/someResponse/schema",
		"#/definitions/datedTaggedRecords/additionalItems",
		"#/paths/~1some~1where~1{id}/get/parameters/2/schema",
	}

	valuesMap := make(map[string]struct{}, len(values))
	for _, v := range values {
		valuesMap[v] = struct{}{}
	}

	expected := []string{
		// Added shared parameters and responses
		"#/parameters/someParam/schema/properties/createdAt",
		"#/parameters/someParam/schema",
		"#/responses/someResponse/schema/properties/createdAt",
		"#/responses/someResponse/schema",
		"#/paths/~1some~1where~1{id}/parameters/1/schema/properties/createdAt",
		"#/paths/~1some~1where~1{id}/parameters/1/schema",
		"#/paths/~1some~1where~1{id}/get/parameters/2/schema/properties/createdAt",
		"#/paths/~1some~1where~1{id}/get/parameters/2/schema",
		"#/paths/~1some~1where~1{id}/get/responses/200/schema/properties/id",
		"#/paths/~1some~1where~1{id}/get/responses/200/schema/properties/value",
		"#/paths/~1some~1where~1{id}/get/responses/200/schema",
		"#/paths/~1some~1where~1{id}/get/responses/404/schema",
		"#/paths/~1some~1where~1{id}/get/responses/default/schema/properties/createdAt",
		"#/paths/~1some~1where~1{id}/get/responses/default/schema",
		"#/definitions/datedRecords/items/1/properties/createdAt",
		"#/definitions/datedTaggedRecords/items/1/properties/createdAt",
		"#/definitions/namedThing/properties/name/properties/id",
		"#/definitions/records/items/0/properties/createdAt",
		"#/definitions/datedTaggedRecords/additionalItems/properties/id",
		"#/definitions/datedTaggedRecords/additionalItems/properties/value",
		"#/definitions/otherRecords/items/properties/createdAt",
		"#/definitions/tags/additionalProperties/properties/id",
		"#/definitions/tags/additionalProperties/properties/value",
		"#/definitions/datedRecords/items/0",
		"#/definitions/datedRecords/items/1",
		"#/definitions/datedTag/allOf/0",
		"#/definitions/datedTag/allOf/1",
		"#/definitions/datedTag/properties/id",
		"#/definitions/datedTag/properties/value",
		"#/definitions/datedTaggedRecords/items/0",
		"#/definitions/datedTaggedRecords/items/1",
		"#/definitions/namedAgain/properties/id",
		"#/definitions/namedThing/properties/name",
		"#/definitions/pneumonoultramicroscopicsilicovolcanoconiosisAntidisestablishmentarianism/properties/" +
			"floccinaucinihilipilificationCreatedAt",
		"#/definitions/records/items/0",
		"#/definitions/datedTaggedRecords/additionalItems",
		"#/definitions/otherRecords/items",
		"#/definitions/tags/additionalProperties",
		"#/definitions/datedRecords",
		"#/definitions/datedTag",
		"#/definitions/datedTaggedRecords",
		"#/definitions/namedAgain",
		"#/definitions/namedThing",
		"#/definitions/otherRecords",
		"#/definitions/pneumonoultramicroscopicsilicovolcanoconiosisAntidisestablishmentarianism",
		"#/definitions/records",
		"#/definitions/tags",
	}

	assert.Equal(t, expected, DepthFirst(valuesMap))
}

func TestSortRef_TopmostFirst(t *testing.T) {
	t.Parallel()

	assert.Equal(t,
		[]string{"/a/b", "/a/b/c"},
		TopmostFirst([]string{"/a/b/c", "/a/b"}),
	)

	assert.Equal(t,
		[]string{"/a/b", "/a/c"},
		TopmostFirst([]string{"/a/c", "/a/b"}),
	)

	assert.Equal(t,
		[]string{"/a/b", "/a/c", "/a/b/c", "/a/b/d", "/a/a/b/d"},
		TopmostFirst([]string{"/a/a/b/d", "/a/b", "/a/b/c", "/a/b/d", "/a/c"}),
	)
}

Al-HUWAITI Shell