* Evoral: SMFTest: added createNewFileTest (passes)
authorHans Baier <hansfbaier@googlemail.com>
Thu, 12 Feb 2009 23:28:51 +0000 (23:28 +0000)
committerHans Baier <hansfbaier@googlemail.com>
Thu, 12 Feb 2009 23:28:51 +0000 (23:28 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@4540 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/evoral/src/LibSMF.cpp
libs/evoral/test/SMFTest.cpp
libs/evoral/test/SMFTest.hpp

index 832d5f322575a0eb6831214c5b11caf2ffe9b40f..2aa64b27d6ef790a63bd75c313ee4ff73944759d 100644 (file)
@@ -52,7 +52,10 @@ LibSMF<Time>::open(const std::string& path) THROW_FILE_ERROR
                smf_delete(_smf);
        }
        
-       _smf = smf_load(path.c_str());
+       _path = path;
+       assert(_path != "");
+       
+       _smf = smf_load(_path.c_str());
        if (!_smf) {
                _smf = smf_new();
                if (smf_set_ppqn(_smf, _ppqn) != 0) {
@@ -62,6 +65,11 @@ LibSMF<Time>::open(const std::string& path) THROW_FILE_ERROR
                if(_smf == NULL) {
                        return -1;
                }
+               
+               _smf_track = smf_track_new();
+               assert(_smf_track);
+
+               smf_add_track(_smf, _smf_track);
        }
                
        _smf_track = smf_get_track_by_number(_smf, 1);
@@ -78,7 +86,6 @@ template<typename Time>
 void
 LibSMF<Time>::close() THROW_FILE_ERROR
 {
-       assert(false);
        if (_smf) {
                if (smf_save(_smf, _path.c_str()) != 0) {
                        throw typename MIDIFile<Time>::FileError();
index fcfa6ef1ddbc066090c452c653c19a057ac805a8..f401ea1abdedc1ba2aa5eaaad5940157ab2dbbf0 100644 (file)
@@ -4,6 +4,16 @@ using namespace std;
 
 CPPUNIT_TEST_SUITE_REGISTRATION( SMFTest );
 
+void
+SMFTest::createNewFileTest ()
+{
+       TestSMF<Time> smf;
+       smf.open("NewFile.mid");
+       smf.close();
+       CPPUNIT_ASSERT(access(smf.path().c_str(), R_OK) == 0);
+       unlink(smf.path().c_str());
+}
+
 void
 SMFTest::takeFiveTest ()
 {
index 9787af8fc14c22e57ba5a252c200cae10ddf7669..e4d390a07fdc8bcd54e67c1641a14f0650f08271 100644 (file)
@@ -14,18 +14,31 @@ using namespace Evoral;
 template<typename Time>
 class TestSMF : public LibSMF<Time> {
 public:
+       std::string path() const { return _path; }
+       
        int open(const std::string& path) THROW_FILE_ERROR {
+               _path = path;
                return LibSMF<Time>::open(path);
        }
        
+       void close() THROW_FILE_ERROR {
+               return LibSMF<Time>::close();
+       }
+       
        int read_event(uint32_t* delta_t, uint32_t* size, uint8_t** buf) const {
                return LibSMF<Time>::read_event(delta_t, size, buf);
        }
+
+private:
+       
+       std::string  _path;
+       
 };
 
 class SMFTest : public CppUnit::TestFixture
 {
     CPPUNIT_TEST_SUITE (SMFTest);
+    CPPUNIT_TEST (createNewFileTest);
     CPPUNIT_TEST (takeFiveTest);
     CPPUNIT_TEST_SUITE_END ();
 
@@ -45,6 +58,7 @@ class SMFTest : public CppUnit::TestFixture
                delete type_map;
         }
 
+        void createNewFileTest(void);
         void takeFiveTest (void);
 
     private: