Tailorization
authorDiane Trout <diane@caltech.edu>
Mon, 26 Jun 2006 22:30:45 +0000 (22:30 +0000)
committerDiane Trout <diane@caltech.edu>
Mon, 26 Jun 2006 22:30:45 +0000 (22:30 +0000)
Import of the upstream sources from
 Repository: /home/diane/proj/tailor/mussa/mussa.hashed
       Kind: darcs
   Revision: SequenceLocationModel improvements

qui/CMakeLists.txt
qui/SequenceLocationModel.cpp
qui/SequenceLocationModel.hpp
qui/test/CMakeLists.txt [new file with mode: 0644]
qui/test/TestSequenceLocationModel.cpp [new file with mode: 0644]

index b48cb33894eff25a48d2823fdc74322e492a38be..07c050aa47c4862e266e664d7033d902ebec6bee 100644 (file)
@@ -80,8 +80,6 @@ TARGET_LINK_LIBRARIES(mussa_qui
 
 ADD_EXECUTABLE(mussagl WIN32 MACOSX_BUNDLE ${MAIN_SOURCES} )
 
-LINK_DIRECTORIES(${MUSSA_BINARY_DIR}/alg
-                 ${MUSSA_BINARY_DIR}/py)
 TARGET_LINK_LIBRARIES(mussagl 
                         mussa_core
                         mussa_qui
@@ -106,3 +104,5 @@ ENDIF(USE_PYTHON)
 SET_SOURCE_FILES_PROPERTIES(${SOURCES} PROPERTIES COMPILE_FLAGS "-fPIC")
 SET_TARGET_PROPERTIES(mussa_qui PROPERTIES COMPILE_FLAGS "-fPIC")
 SET_TARGET_PROPERTIES(mussagl PROPERTIES COMPILE_FLAGS "-fPIC")
+
+ADD_SUBDIRECTORY( test )
index ebf11852e3f099067c63d793a7e98f0235a2f745..727a79b10a10614dc2248c900d94dbf815b1644c 100644 (file)
@@ -4,8 +4,73 @@ SequenceLocationModel::SequenceLocationModel(QObject *parent)
   : QAbstractTableModel(parent)
 {
   Sequence s("AGCT");
-  sequence_locations.push_back(SequenceLocation(s, 0, 1));
-  sequence_locations.push_back(SequenceLocation(s, 2, 2));
+}
+
+void SequenceLocationModel::assign(
+    SequenceLocationModel::size_type num, 
+    const SequenceLocation& val
+)
+{
+  sequence_locations.assign(num, val);
+}
+
+SequenceLocation& SequenceLocationModel::at(
+    SequenceLocationModel::size_type index
+)
+{
+  return sequence_locations.at(index);
+}
+
+SequenceLocation& SequenceLocationModel::back()
+{
+  return sequence_locations.back();
+}
+
+SequenceLocationModel::iterator SequenceLocationModel::begin()
+{
+  return sequence_locations.begin();
+}
+
+SequenceLocationModel::const_iterator SequenceLocationModel::begin() const
+{
+  return sequence_locations.begin();
+}
+
+SequenceLocationModel::iterator SequenceLocationModel::end()
+{
+  return sequence_locations.end();
+}
+
+SequenceLocationModel::const_iterator SequenceLocationModel::end() const
+{
+  return sequence_locations.end();
+}
+
+bool SequenceLocationModel::empty() const
+{
+  return sequence_locations.empty();
+}
+
+SequenceLocation& SequenceLocationModel::operator[](
+    SequenceLocationModel::size_type index
+)
+{
+  return sequence_locations[index];
+}
+
+void SequenceLocationModel::pop_back()
+{
+  sequence_locations.pop_back();
+}
+
+void SequenceLocationModel::push_back(SequenceLocation& item)
+{
+  sequence_locations.push_back(item);
+}
+
+SequenceLocationModel::size_type SequenceLocationModel::size() const
+{
+  return sequence_locations.size();
 }
 
 int 
index f8f729356544927e96856495149a2d902cc1c650..76b933351e889b931da8e834133863e7a1104c48 100644 (file)
@@ -12,7 +12,42 @@ class SequenceLocationModel : public QAbstractTableModel
   public:
     SequenceLocationModel(QObject *parent = 0);
 
-    
+    typedef std::vector<SequenceLocation> model_type;
+    typedef model_type::size_type size_type;
+    typedef model_type::iterator iterator; 
+    typedef model_type::const_iterator const_iterator; 
+    //! \defgroup VectorInterface
+    //! \addtogroup VectorInterface
+    //! \@{
+    //! assign num copies of val to our vector
+    void assign(size_type num, const SequenceLocation& val);
+    //! return a specific element
+    SequenceLocation& at(size_type index);
+    //! return the last element
+    SequenceLocation& back();
+    //! return an iterator to the beginning of the model
+    iterator begin();
+    //! return an iterator to the beginning of the model
+    const_iterator begin() const;
+    //! return an iterator to the end of the model
+    iterator end();
+    //! return an iterator to the end of the model
+    const_iterator end() const;
+    //! is the model empty?
+    bool empty() const;
+    //! return a specific element
+    SequenceLocation& operator[](size_type index);
+    //! remove the last element from our model
+    void pop_back();
+    //! add a sequence location to the end of our model
+    void push_back(SequenceLocation&);
+    //! how many elements are in our model.
+    size_type size() const;
+    //! \@}
+
+    //! \defgroup QtModelInterface
+    //! \addtogroup QtModel
+    //! \@{
     int rowCount(const QModelIndex& parent=QModelIndex()) const;
     int columnCount(const QModelIndex& parent=QModelIndex()) const;
     QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const;
@@ -27,8 +62,9 @@ class SequenceLocationModel : public QAbstractTableModel
     //                const QModelIndex& parent=QModelIndex());
     //bool removeRows(int row, int count);
     //                const QModelIndex& parent=QModelIndex());
+    //! \@}
   private:
-    std::vector<SequenceLocation> sequence_locations;
+    model_type sequence_locations;
 };
 
 #endif
diff --git a/qui/test/CMakeLists.txt b/qui/test/CMakeLists.txt
new file mode 100644 (file)
index 0000000..13d74df
--- /dev/null
@@ -0,0 +1,40 @@
+#deal with some debian wierdness
+FIND_PROGRAM(QT_QMAKE_EXECUTABLE qmake-qt4 )
+FIND_PROGRAM(QT_MOC_EXECUTABLE moc-qt4 )
+
+FIND_PACKAGE(Qt4)
+SET(QT_USE_QTOPENGL 1)
+IF(QT_ASSISTANT_LIB)
+  SET(QT_USE_QTNETWORK 1)
+  SET(QT_USE_QTASSISTANT 1)
+ENDIF(QT_ASSISTANT_LIB)
+INCLUDE( ${QT_USE_FILE} )
+FIND_PACKAGE(OpenGL)
+FIND_PACKAGE(Boost)
+FIND_PACKAGE(PythonLibs)
+
+SET(libs
+        mussa_core
+        mussa_qui
+        ${QT_LIBRARIES}
+        ${OPENGL_gl_LIBRARY}
+        ${BOOST_PROGRAM_OPTIONS_LIBRARY}
+        ${BOOST_FILESYSTEM_LIBRARY}
+        ${QT_QTTEST_LIBRARY}
+      )
+
+MACRO(MAKE_UNITTEST basename)
+  QT4_WRAP_CPP(${basename}_MOC_CXX  ${basename}.cpp)
+  GET_FILENAME_COMPONENT(${basename}_MOC_DIR ${${basename}_MOC_CXX} PATH)
+  SET(${basename}_SRC ${basename}.cpp)
+  INCLUDE_DIRECTORIES(${${basename}_MOC_DIR})
+  SET_SOURCE_FILES_PROPERTIES(${${basename}_SRC} 
+                              PROPERTIES COMPILE_FLAGS "-fPIC"
+                             )
+  ADD_EXECUTABLE(${basename} ${${basename}_SRC})
+  SET_TARGET_PROPERTIES(${basename} PROPERTIES COMPILE_FLAGS "-fPIC")
+  TARGET_LINK_LIBRARIES(${basename} ${libs})
+  ADD_TEST(${basename} ${basename})
+ENDMACRO(MAKE_UNITTEST)
+
+MAKE_UNITTEST(TestSequenceLocationModel)
diff --git a/qui/test/TestSequenceLocationModel.cpp b/qui/test/TestSequenceLocationModel.cpp
new file mode 100644 (file)
index 0000000..6a05b50
--- /dev/null
@@ -0,0 +1,38 @@
+#include "qui/SequenceLocationModel.hpp"
+#include "alg/sequence_location.hpp"
+#include "alg/sequence.hpp"
+
+#include <QtTest/QtTest>
+
+class TestSequenceLocationModel : public QObject
+{
+  Q_OBJECT
+
+private slots:
+
+  void testAddSequences() {
+    Sequence seq1("AAGGCCTT");
+    Sequence seq2("GGCCTTAA");
+
+    SequenceLocation loc1(seq1, 0, 2);
+    SequenceLocation loc2(seq2, 3, 3);
+
+    SequenceLocationModel slm;
+    QVERIFY(slm.size() == 0);
+    slm.push_back(loc1);
+    slm.push_back(loc2);
+
+    QVERIFY(slm.rowCount() == 2);
+    QVERIFY(slm.rowCount() == slm.size());
+
+  }
+
+  void testColumn() {
+    SequenceLocationModel slm;
+    QVERIFY(slm.columnCount() == 3);
+  }
+};
+
+
+QTEST_MAIN(TestSequenceLocationModel)
+#include "moc_TestSequenceLocationModel.cxx"