english
version "1.0"
identify "@(#)sort_test.sts 1.1 95/10/08"

#: Copyright (c) 1995 by Wayne C. Gramlich.
#, All rights reserved.
#,
#, Permission to use, copy, modify, distribute, and sell this software
#, for any purpose is hereby granted without fee provided that the above
#, copyright notice and this permission are retained.  The author makes
#, no representations about the suitability of this software for any purpose.
#, It is provided "as is" without express or implied warranty.

module sort_test

#: This module implements code to test the {sort}@{vector} procedure.

import
    character
    in_stream
    integer
    out_stream
    string
    system
    unsigned
    vector

procedure main
    takes
	system system
    returns unsigned

    #: This procedure tests the {sort}@{vector} procedure.

    error_stream :@= system.error_out_stream
    out_stream :@= system.standard_out_stream
    errors :@= 0

    vector5 :@= allocate@vector[string]()
    append@(vector5, "moth")
    append@(vector5, "wood")
    append@(vector5, "moth")
    append@(vector5, "apple")
    errors :+= sort_test(vector5, out_stream)

    vector1 :@= allocate@vector[string]()
    errors :+= sort_test(vector1, out_stream)

    vector2 :@= allocate@vector[string]()
    append@(vector2, "moth")
    errors :+= sort_test(vector2, out_stream)

    vector3 :@= allocate@vector[string]()
    append@(vector3, "moth")
    append@(vector3, "house")
    append@(vector3, "cat")
    append@(vector3, "xray")
    errors :+= sort_test(vector3, out_stream)

    vector4 :@= allocate@vector[string]()
    append@(vector4, "moth")
    append@(vector4, "house")
    append@(vector4, "cat")
    append@(vector4, "xray")
    append@(vector4, "apple")
    append@(vector4, "wood")
    append@(vector4, "moth")
    errors :+= sort_test(vector4, out_stream)

    return errors != 0

procedure sort_test
    takes
	vector vector[string]
	out_stream out_stream
    returns unsigned

    print@(vector, out_stream)
    put@("\n\", out_stream)
    sort@(vector)
    print@(vector, out_stream)
    put@("\n\", out_stream)
    unique@(vector)
    print@(vector, out_stream)
    put@("\n,n\", out_stream)
    return 0

