void Document::DeleteContents()
{
    m_header.LoadDefaults();
    DeleteScoreArrayContents();
    m_tablatureStaffLineSpacing = DEFAULT_TABLATURE_STAFF_LINE_SPACING;

    m_fontSettings.fill(FontSetting());

    m_fadeIn = DEFAULT_FADE_IN;
    m_fadeOut = DEFAULT_FADE_OUT;
}
/// Tests the Constructors
/// @return True if all tests were executed, false if not
bool FloatingTextTestSuite::TestCaseConstructor()
{
    //------Last Checked------//
    // - Dec 6, 2004

    const FontSetting fontSetting(wxT("Arial"), 12, FontSetting::weightBold, true, true, true, wxColor(255,0,0));    
    
    // TEST CASE: Default constructor
    {
        FloatingText floatingText;
        TEST(wxT("Default Constructor"), 
        (
            (floatingText.GetText() == FloatingText::DEFAULT_TEXT) &&
            (floatingText.GetRect() == FloatingText::DEFAULT_RECT) &&
            (floatingText.IsAlignedLeft()) &&
            (!floatingText.HasBorder()) &&
            (floatingText.GetFontSetting() == FontSetting())
        ));
    }

    // TEST CASE: Primary constructor
    {
        FloatingText floatingText(wxT("Test"), wxRect(10,10,20,20), FloatingText::alignCenter | FloatingText::border, fontSetting);
        TEST(wxT("Primary Constructor"), 
            (floatingText.GetText() == wxT("Test")) &&
            (floatingText.GetRect() == wxRect(10,10,20,20)) &&
            (floatingText.IsAlignedCenter()) &&
            (floatingText.HasBorder()) &&
            (floatingText.GetFontSetting() == fontSetting)
        );
    }
    
    // TEST CASE: Copy constructor
    {
        FloatingText floatingText(wxT("Test"), wxRect(10,10,20,20), FloatingText::alignCenter | FloatingText::border, fontSetting);
        FloatingText floatingText2(floatingText);

        TEST(wxT("Copy Constructor"), 
        (
            (floatingText == floatingText2)
        ));
    }
    
    return (true);
}
/// Tests the Operators
/// @return True if all tests were executed, false if not
bool ScoreTestSuite::TestCaseOperator()
{
    //------Last Checked------//
    // - Jan 6, 2005
    
    // TEST CASE: Assignment Operator
    {
        Score score;
        score.m_guitarArray.Add(new Guitar);
        score.m_chordDiagramArray.Add(new ChordDiagram);
        score.m_floatingTextArray.Add(new FloatingText);
        score.m_guitarInArray.Add(new GuitarIn);
        score.m_tempoMarkerArray.Add(new TempoMarker);
        score.m_dynamicArray.Add(new Dynamic);
        score.m_alternateEndingArray.Add(new AlternateEnding);
        score.m_systemArray.Add(new System);
        
        Score score2 = score;
        TEST(wxT("Operator="), score2 == score);
        
        // TEST CASE: Operator= (self-assignment)
        score = score;
        TEST(wxT("Operator= (self-assignment)"),
            (score == score)
        );
    }
    
    // TEST CASE: Equality Operator
    {
        Score score;
        Score score2;
        
        Score score3;
        score3.m_guitarArray.Add(new Guitar(2));
        
        Score score4;
        score4.m_chordDiagramArray.Add(new ChordDiagram(ChordName(), 2, 1, 2, 3));
        
        Score score5;
        score5.m_floatingTextArray.Add(new FloatingText(wxT("Test"), wxRect(1,2,3,4), 0, FontSetting()));
        
        Score score6;
        score6.m_guitarInArray.Add(new GuitarIn(1,2,3,4,2));
        
        Score score7;
        score7.m_tempoMarkerArray.Add(new TempoMarker(1,2, 1, 1, wxT("Test")));
        
        Score score8;
        score8.m_dynamicArray.Add(new Dynamic(1,2,3,1,1));
        
        Score score9;
        score9.m_alternateEndingArray.Add(new AlternateEnding(1,2,12));
        
        Score score10;
        score10.m_systemArray.Add(new System);
        
        TEST(wxT("Operator== - score == score"), score == score2);
        TEST(wxT("Operator== - score != score"), !(score == score3));
        TEST(wxT("Operator== - score != score 2"), !(score == score4));
        TEST(wxT("Operator== - score != score 3"), !(score == score5));
        TEST(wxT("Operator== - score != score 4"), !(score == score6));
        TEST(wxT("Operator== - score != score 5"), !(score == score7));
        TEST(wxT("Operator== - score != score 6"), !(score == score8));
        TEST(wxT("Operator== - score != score 7"), !(score == score9));
        TEST(wxT("Operator== - score != score 8"), !(score == score10));
    }
    
    // TEST CASE: Inequality Operator
    {
        Score score;
        Score score2;
        
        Score score3;
        score3.m_guitarArray.Add(new Guitar(2));
        
        Score score4;
        score4.m_chordDiagramArray.Add(new ChordDiagram(ChordName(), 2, 1, 2, 3));
        
        Score score5;
        score5.m_floatingTextArray.Add(new FloatingText(wxT("Test"), wxRect(1,2,3,4), 0, FontSetting()));
        
        Score score6;
        score6.m_guitarInArray.Add(new GuitarIn(1,2,3,4,2));
        
        Score score7;
        score7.m_tempoMarkerArray.Add(new TempoMarker(1,2, 1, 120, wxT("Test")));
        
        Score score8;
        score8.m_dynamicArray.Add(new Dynamic(1,2,3,1,1));
        
        Score score9;
        score9.m_alternateEndingArray.Add(new AlternateEnding(1,2,12));
        
        Score score10;
        score10.m_systemArray.Add(new System);
        
        TEST(wxT("Operator!= - score == score"), !(score != score2));
        TEST(wxT("Operator!= - score != score"), (score != score3));
        TEST(wxT("Operator!= - score != score 2"), (score != score4));
        TEST(wxT("Operator!= - score != score 3"), (score != score5));
        TEST(wxT("Operator!= - score != score 4"), (score != score6));
        TEST(wxT("Operator!= - score != score 5"), (score != score7));
        TEST(wxT("Operator!= - score != score 6"), (score != score8));
        TEST(wxT("Operator!= - score != score 7"), (score != score9));
        TEST(wxT("Operator!= - score != score 8"), (score != score10));
    }
    
    return (true);
}
/// Tests Serialization
/// @return True if all tests were executed, false if not
bool FloatingTextTestSuite::TestCaseSerialize()
{
    //------Last Checked------//
    // - Dec 7, 2004

    bool ok = false;
    
    TestStream testStream;
    PowerTabOutputStream streamOut(testStream.GetOutputStream());
    
    // Write test data to stream
    FloatingText floatingTextOut(wxT("Text"), wxRect(10, 10, 20, 20), FloatingText::alignCenter | FloatingText::border, FontSetting(wxT("Arial"), 10, FontSetting::weightBold, true, true, true, wxColor(255,0,0)));
    floatingTextOut.Serialize(streamOut);

    // Output must be OK before using input
    if (testStream.CheckOutputState())
    {
        PowerTabInputStream streamIn(testStream.GetInputStream());
    
        // Read test data back from stream
        FloatingText floatingTextIn;
        floatingTextIn.Deserialize(streamIn, PowerTabFileHeader::FILEVERSION_CURRENT);

        // Validate the data
        ok = ((floatingTextIn == floatingTextOut) 
            && (streamIn.CheckState()));
    }
    
    TEST(wxT("Serialize"), ok);
    
    return (true);
}