#include "List.h"
#include <vector>


#define CATCH_CONFIG_MAIN
#include "catch.hpp"

using Vi = std::vector<int>;

TEST_CASE ("Sort")
{
    Vi sorted { 1, 2, 4, 7 };
    Vi unsorted { 1, 4, 2, 7 };
    List vals;
    for ( auto i : unsorted )
    {
        vals.push_back(i);
    }
    vals.sort();
    for ( size_t i {}; i < sorted.size(); ++i )
    {
        REQUIRE ( sorted[i] == vals.at(i) );
    }
}
TEST_CASE ("Sort 2")
{
    Vi sorted { 1, 2, 4, 7 };
    Vi unsorted { 4, 2, 1, 7 };
    List vals;
    for ( auto i : unsorted )
    {
        vals.push_back(i);
    }
    vals.sort();
    for ( size_t i {}; i < sorted.size(); ++i )
    {
        REQUIRE ( sorted[i] == vals.at(i) );
    }
}
TEST_CASE ("Sort 3")
{
    Vi sorted { 1, 2, 4, 7 };
    Vi unsorted { 1, 4, 7, 2 };
    List vals;
    for ( auto i : unsorted )
    {
        vals.push_back(i);
    }
    vals.sort();
    for ( size_t i {}; i < sorted.size(); ++i )
    {
        REQUIRE ( sorted[i] == vals.at(i) );
    }
}

TEST_CASE ( " Sort Empty " )
{
    List l;
    l.sort();
    REQUIRE ( l.size() == 0 );
}