[Mesa-dev] [PATCH mesa 2/2] mapi: add asserts to enforce ordering and uniqueness

Ilia Mirkin imirkin at alum.mit.edu
Sun Sep 25 02:27:52 UTC 2016


On Sat, Sep 24, 2016 at 10:17 PM, Eric Engestrom <eric at engestrom.ch> wrote:
> Dylan Baker recently added functions to that list and had to try a couple times
> to avoid duplicates. He said [1] he ended up testing it using:
>   len(functions) == len(set(functions))
> which I thought should always be done.
>
> Add this and a couple other tests using asserts to enforce the ordering and
> uniqueness of the `functions` list, and the uniqueness and compactness of the
> `offsets` dictionary.
>
> [1] https://lists.freedesktop.org/archives/mesa-dev/2016-September/129525.html
>
> Signed-off-by: Eric Engestrom <eric at engestrom.ch>
> ---
>
> If people don't like enforcing the order, I'm happy to drop the previous patch
> and send a revised version of this patch with this last assert removed.
>
> ---
>  src/mapi/glapi/gen/static_data.py | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/src/mapi/glapi/gen/static_data.py b/src/mapi/glapi/gen/static_data.py
> index bb11c1d..ef35b24 100644
> --- a/src/mapi/glapi/gen/static_data.py
> +++ b/src/mapi/glapi/gen/static_data.py
> @@ -435,6 +435,9 @@ offsets = {
>      "MultiTexCoord4sv": 407
>  }
>
> +assert len(offsets) == len(set(offsets.keys())),  "The offsets dictionary contains duplicates"

set(offsets) should be enough, I think.

> +assert len(offsets) == max(offsets.values()) + 1, "The offsets dictionary has gaps"

offsets.itervalues()

> +
>  functions = [
>      "Accum",
>      "ActiveShaderProgram",
> @@ -1723,6 +1726,9 @@ functions = [
>      "WindowPos3svARB",
>  ]
>
> +assert len(functions) == len(set(functions)), "The functions list contains duplicates"
> +assert functions == sorted(functions),        "The functions list is not sorted"

I'm surprised this passes. Functions is an array, while sorted() is,
iirc, an iterator (or maybe a generator). Does list.__eq__ have some
sort of special cleverness to deal with that?


More information about the mesa-dev mailing list