package m2mcore_test import ( "regexp" "testing" "git.zetit.ru/zuevav/Bridge-and-Join-s/internal/m2m" "git.zetit.ru/zuevav/Bridge-and-Join-s/internal/m2mcore" ) func TestNewUUIDv4Format(t *testing.T) { pattern := regexp.MustCompile(`^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$`) seen := make(map[string]struct{}) for i := 0; i < 100; i++ { u, err := m2mcore.NewUUIDv4() if err != nil { t.Fatal(err) } if !pattern.MatchString(u) { t.Errorf("UUID %q не соответствует RFC4122 v4", u) } if _, dup := seen[u]; dup { t.Errorf("сгенерирован дубликат %q", u) } seen[u] = struct{}{} // Также должен проходить XSD-валидатор НРД. if err := (m2m.UUID(u)).Validate(); err != nil { t.Errorf("UUID %q отвергнут XSD-валидатором: %v", u, err) } } } func TestNewReferenceID(t *testing.T) { at := mustParseTime(t, "2026-03-02T14:30:45Z") id, err := m2mcore.NewReferenceID(at) if err != nil { t.Fatal(err) } if len(id) != 16 { t.Errorf("ReferenceID длина %d, ожидалось 16", len(id)) } if err := id.Validate(); err != nil { t.Errorf("ReferenceID %q отвергнут валидатором: %v", id, err) } }