The types array in a protocol definition could come textually after the messages, but the types must be processed before the messages and in-order. Should we clarify that too?
Good catch. I looked at Schemas and verified that types appear in arrays, but not protocols. What if I changed my older text to the following: "A schema or protocol may not contain multiple definitions of a fullname. Further, a name must be defined before it is used ("before" in the depth-first, left-to-right traversal of the JSON parse tree, where the types attribute of a protocol is always deemed to come "before" the messages attribute.)" A bit windy, but precise.
It would sure be nice if there were a few shared folders that every language tested schemas and protocols against.
The test-suite I'm writing for
AVRO-1006 will include a file of test cases in src/test/resources that could be the basis of what you're talking about here. I'll get that posted soon, you can look at it and see what more would need to be done.