void DataRequirementsTest::test_hash()
{
    // Use Case:
    // Ensure hash returns a non-zero value.
    {
        DataRequirements d;
        d.addRequired(QString("hello"));
        CPPUNIT_ASSERT(d.hash() != 0);
    }

    // Use Case:
    // Ensure different DataRequirement objects return different hash values.
    {
        DataRequirements d1;
        d1.addRequired(QString("one"));
        DataRequirements d2;
        d2.addRequired(QString("two"));
        CPPUNIT_ASSERT(d1.hash() != d2.hash());
    }

    // Use Case:
    // Ensure different ordering returns the same hash.
    {
        DataRequirements d1;
        d1.addRequired("one");
        d1.addRequired("two");

        DataRequirements d2;
        d2.addRequired("two");
        d2.addRequired("one");
        CPPUNIT_ASSERT(d1.hash() == d2.hash());
    }
}