void Ut_RemoteDBMgr::initTestCase()
{
- dbVerified = false;
+ dbOk = false;
connect(&subject, SIGNAL(dbReady(RemoteDB *)),
this, SLOT(verifyDB(RemoteDB *)));
- subject.getDBAsync();
+ createTestData();
+}
+
+void Ut_RemoteDBMgr::createTestData()
+{
+ RemoteList ra;
+ ra << new Remote("model_A1", "A_mfg", 1, 9)
+ << new Remote("model_A2", "A_mfg", 2, 10);
+ RemoteList rb;
+ rb << new Remote("model_B3", "B_mfg", 3, 11)
+ << new Remote("model_B4", "B_mfg", 4, 12)
+ << new Remote("model_B5", "B_mfg", 5, 13);
+ RemoteList rc1;
+ rc1 << new Remote("model_C1_6", "C1_mfg", 6, 14);
+ RemoteList rc2;
+ rc2 << new Remote("model_C2_7", "C2_mfg", 7, 15)
+ << new Remote("model_C2_8", "C2_mfg", 8, 16);
+
+ MfgMap ma;
+ ma.insert("A_mfg", ra);
+ MfgMap mb;
+ mb.insert("B_mfg", rb);
+ MfgMap mc;
+ mc.insert("C1_mfg", rc1);
+ mc.insert("C2_mfg", rc2);
+
+ validDB.insert("A", ma);
+ validDB.insert("B", mb);
+ validDB.insert("C", mc);
+
+ createTestDocument();
+}
+
+void Ut_RemoteDBMgr::createTestDocument()
+{
+ QDomElement root = document.createElement("db");
+ document.appendChild(root);
+
+ for (int i = 0; i < validDB.keys().size(); ++i) {
+ QChar letter = validDB.keys()[i][0];
+ QDomElement charEl = document.createElement("char");
+ charEl.setAttribute("id", letter);
+ createMfgElements(letter, charEl);
+ root.appendChild(charEl);
+ }
+
+ QNetworkReply::content = document.toByteArray();
+}
+
+void Ut_RemoteDBMgr::createMfgElements(QChar &letter, QDomElement &parent)
+{
+ for (int i = 0; i < validDB[letter].keys().size(); ++i) {
+ QString mfg = validDB[letter].keys()[i];
+ QDomElement mfgEl = document.createElement("mfg");
+ mfgEl.setAttribute("id", mfg);
+ createModelElements(mfg, mfgEl);
+ parent.appendChild(mfgEl);
+ }
+}
+
+void Ut_RemoteDBMgr::createModelElements(const QString &mfg,
+ QDomElement &parent)
+{
+ for (int i = 0; i < validDB[mfg[0]][mfg].size(); ++i) {
+ Remote *r = validDB[mfg[0]][mfg][i];
+ QDomElement modelEl = document.createElement("model");
+ modelEl.setAttribute("name", r->name());
+ modelEl.setAttribute("rating", r->rating());
+ modelEl.setAttribute("vote_count", r->voteCount());
+ parent.appendChild(modelEl);
+ }
}
void Ut_RemoteDBMgr::cleanupTestCase()
void Ut_RemoteDBMgr::testGetDBAsync()
{
- QCOMPARE(dbVerified, true);
+ subject.getDBAsync();
+ dbMutex.lock();
+ dbVerified.wait(&dbMutex, 5000);
+ QCOMPARE(dbOk, true);
+ dbMutex.unlock();
}
void Ut_RemoteDBMgr::verifyDB(RemoteDB *db)
{
- dbVerified = true;
+ if (db == NULL) {
+ dbOk = false;
+ } else {
+ QCOMPARE(db->isEmpty(), false);
+ QCOMPARE(validDB.size(), db->size());
+ verifyRemotes(db);
+ dbOk = true;
+ }
+ dbVerified.wakeAll();
+}
+
+void Ut_RemoteDBMgr::verifyRemotes(RemoteDB *db)
+{
+ for (int i = 0; i < validDB.size(); ++i) {
+ MfgMap &validMfgs = validDB[validDB.keys()[i]];
+ MfgMap &mfgs = (*db)[db->keys()[i]];
+ QCOMPARE(validMfgs.size(), mfgs.size());
+ QCOMPARE(validDB.keys()[i], db->keys()[i]);
+
+ for (int j = 0; j < validMfgs.size(); ++j) {
+ RemoteList validRemotes = validMfgs[validMfgs.keys()[j]];
+ RemoteList remotes = mfgs[mfgs.keys()[j]];
+ QCOMPARE(validRemotes.size(), remotes.size());
+ QCOMPARE(validMfgs.keys()[j], mfgs.keys()[j]);
+
+ for (int k = 0; k < validRemotes.size(); ++k) {
+ QCOMPARE(*(validRemotes[k]), *(remotes[k]));
+ }
+ }
+ }
}
--- /dev/null
+#############################################################################
+# Makefile for building: test
+# Generated by qmake (2.01a) (Qt 4.6.2) on: Tue Jun 29 13:48:11 2010
+# Project: ut_remotedbmgr.pro
+# Template: app
+# Command: /usr/bin/qmake -unix -o Makefile ut_remotedbmgr.pro
+#############################################################################
+
+####### Compiler, tools and options
+
+CC = gcc
+CXX = g++
+DEFINES = -DQT_NO_DEBUG -DQT_TESTLIB_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED
+CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
+CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
+INCPATH = -I../stubs -I../../src -Imocs -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtXml -I/usr/include/qt4/QtTest -I/usr/include/qt4
+LINK = g++
+LFLAGS = -Wl,-O1
+LIBS = $(SUBLIBS) -L/usr/lib -lQtTest -lQtXml -lQtGui -lQtNetwork -lQtCore -lpthread
+AR = ar cqs
+RANLIB =
+QMAKE = /usr/bin/qmake
+TAR = tar -cf
+COMPRESS = gzip -9f
+COPY = cp -f
+SED = sed
+COPY_FILE = $(COPY)
+COPY_DIR = $(COPY) -r
+STRIP = strip
+INSTALL_FILE = install -m 644 -p
+INSTALL_DIR = $(COPY_DIR)
+INSTALL_PROGRAM = install -m 755 -p
+DEL_FILE = rm -f
+SYMLINK = ln -f -s
+DEL_DIR = rmdir
+MOVE = mv -f
+CHK_DIR_EXISTS= test -d
+MKDIR = mkdir -p
+
+####### Output directory
+
+OBJECTS_DIR = objs/
+
+####### Files
+
+SOURCES = ../stubs/qnetworkreply.cpp \
+ ../stubs/qnetworkaccessmanager.cpp \
+ ut_remotedbmgr.cpp \
+ ../../src/remotedbmgr.cpp \
+ ../../src/remote.cpp \
+ ../../src/rating.cpp \
+ ../stubs/qsettings.cpp mocs/moc_ut_remotedbmgr.cpp \
+ mocs/moc_remotedbmgr.cpp \
+ mocs/moc_remote.cpp
+OBJECTS = objs/qnetworkreply.o \
+ objs/qnetworkaccessmanager.o \
+ objs/ut_remotedbmgr.o \
+ objs/remotedbmgr.o \
+ objs/remote.o \
+ objs/rating.o \
+ objs/qsettings.o \
+ objs/moc_ut_remotedbmgr.o \
+ objs/moc_remotedbmgr.o \
+ objs/moc_remote.o
+DIST = /usr/share/qt4/mkspecs/common/g++.conf \
+ /usr/share/qt4/mkspecs/common/unix.conf \
+ /usr/share/qt4/mkspecs/common/linux.conf \
+ /usr/share/qt4/mkspecs/qconfig.pri \
+ /usr/share/qt4/mkspecs/features/qt_functions.prf \
+ /usr/share/qt4/mkspecs/features/qt_config.prf \
+ /usr/share/qt4/mkspecs/features/exclusive_builds.prf \
+ /usr/share/qt4/mkspecs/features/default_pre.prf \
+ ../ut.pri \
+ /usr/share/qt4/mkspecs/features/release.prf \
+ /usr/share/qt4/mkspecs/features/default_post.prf \
+ /usr/share/qt4/mkspecs/features/warn_on.prf \
+ /usr/share/qt4/mkspecs/features/qt.prf \
+ /usr/share/qt4/mkspecs/features/unix/thread.prf \
+ /usr/share/qt4/mkspecs/features/moc.prf \
+ /usr/share/qt4/mkspecs/features/resources.prf \
+ /usr/share/qt4/mkspecs/features/uic.prf \
+ /usr/share/qt4/mkspecs/features/yacc.prf \
+ /usr/share/qt4/mkspecs/features/lex.prf \
+ ut_remotedbmgr.pro
+QMAKE_TARGET = test
+DESTDIR =
+TARGET = test
+
+first: all
+####### Implicit rules
+
+.SUFFIXES: .o .c .cpp .cc .cxx .C
+
+.cpp.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.cc.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.cxx.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.C.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.c.o:
+ $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
+
+####### Build rules
+
+all: Makefile $(TARGET)
+
+$(TARGET): $(OBJECTS)
+ $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
+
+Makefile: ut_remotedbmgr.pro /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mkspecs/common/g++.conf \
+ /usr/share/qt4/mkspecs/common/unix.conf \
+ /usr/share/qt4/mkspecs/common/linux.conf \
+ /usr/share/qt4/mkspecs/qconfig.pri \
+ /usr/share/qt4/mkspecs/features/qt_functions.prf \
+ /usr/share/qt4/mkspecs/features/qt_config.prf \
+ /usr/share/qt4/mkspecs/features/exclusive_builds.prf \
+ /usr/share/qt4/mkspecs/features/default_pre.prf \
+ ../ut.pri \
+ /usr/share/qt4/mkspecs/features/release.prf \
+ /usr/share/qt4/mkspecs/features/default_post.prf \
+ /usr/share/qt4/mkspecs/features/warn_on.prf \
+ /usr/share/qt4/mkspecs/features/qt.prf \
+ /usr/share/qt4/mkspecs/features/unix/thread.prf \
+ /usr/share/qt4/mkspecs/features/moc.prf \
+ /usr/share/qt4/mkspecs/features/resources.prf \
+ /usr/share/qt4/mkspecs/features/uic.prf \
+ /usr/share/qt4/mkspecs/features/yacc.prf \
+ /usr/share/qt4/mkspecs/features/lex.prf \
+ /usr/lib/libQtTest.prl \
+ /usr/lib/libQtXml.prl \
+ /usr/lib/libQtGui.prl \
+ /usr/lib/libQtNetwork.prl \
+ /usr/lib/libQtCore.prl
+ $(QMAKE) -unix -o Makefile ut_remotedbmgr.pro
+/usr/share/qt4/mkspecs/common/g++.conf:
+/usr/share/qt4/mkspecs/common/unix.conf:
+/usr/share/qt4/mkspecs/common/linux.conf:
+/usr/share/qt4/mkspecs/qconfig.pri:
+/usr/share/qt4/mkspecs/features/qt_functions.prf:
+/usr/share/qt4/mkspecs/features/qt_config.prf:
+/usr/share/qt4/mkspecs/features/exclusive_builds.prf:
+/usr/share/qt4/mkspecs/features/default_pre.prf:
+../ut.pri:
+/usr/share/qt4/mkspecs/features/release.prf:
+/usr/share/qt4/mkspecs/features/default_post.prf:
+/usr/share/qt4/mkspecs/features/warn_on.prf:
+/usr/share/qt4/mkspecs/features/qt.prf:
+/usr/share/qt4/mkspecs/features/unix/thread.prf:
+/usr/share/qt4/mkspecs/features/moc.prf:
+/usr/share/qt4/mkspecs/features/resources.prf:
+/usr/share/qt4/mkspecs/features/uic.prf:
+/usr/share/qt4/mkspecs/features/yacc.prf:
+/usr/share/qt4/mkspecs/features/lex.prf:
+/usr/lib/libQtTest.prl:
+/usr/lib/libQtXml.prl:
+/usr/lib/libQtGui.prl:
+/usr/lib/libQtNetwork.prl:
+/usr/lib/libQtCore.prl:
+qmake: FORCE
+ @$(QMAKE) -unix -o Makefile ut_remotedbmgr.pro
+
+dist:
+ @$(CHK_DIR_EXISTS) objs/test1.0.0 || $(MKDIR) objs/test1.0.0
+ $(COPY_FILE) --parents $(SOURCES) $(DIST) objs/test1.0.0/ && $(COPY_FILE) --parents ../stubs/qnetworkreply.h ut_remotedbmgr.h ../../src/remotedbmgr.h ../../src/remotedb.h ../../src/remote.h ../../src/rating.h ../stubs/qsettings.h objs/test1.0.0/ && $(COPY_FILE) --parents ../stubs/qnetworkreply.cpp ../stubs/qnetworkaccessmanager.cpp ut_remotedbmgr.cpp ../../src/remotedbmgr.cpp ../../src/remote.cpp ../../src/rating.cpp ../stubs/qsettings.cpp objs/test1.0.0/ && (cd `dirname objs/test1.0.0` && $(TAR) test1.0.0.tar test1.0.0 && $(COMPRESS) test1.0.0.tar) && $(MOVE) `dirname objs/test1.0.0`/test1.0.0.tar.gz . && $(DEL_FILE) -r objs/test1.0.0
+
+
+clean:compiler_clean
+ -$(DEL_FILE) $(OBJECTS)
+ -$(DEL_FILE) *~ core *.core
+
+
+####### Sub-libraries
+
+distclean: clean
+ -$(DEL_FILE) $(TARGET)
+ -$(DEL_FILE) Makefile
+
+
+mocclean: compiler_moc_header_clean compiler_moc_source_clean
+
+mocables: compiler_moc_header_make_all compiler_moc_source_make_all
+
+compiler_moc_header_make_all: mocs/moc_ut_remotedbmgr.cpp mocs/moc_remotedbmgr.cpp mocs/moc_remote.cpp
+compiler_moc_header_clean:
+ -$(DEL_FILE) mocs/moc_ut_remotedbmgr.cpp mocs/moc_remotedbmgr.cpp mocs/moc_remote.cpp
+mocs/moc_ut_remotedbmgr.cpp: ut_remotedbmgr.h
+ /usr/bin/moc-qt4 $(DEFINES) $(INCPATH) ut_remotedbmgr.h -o mocs/moc_ut_remotedbmgr.cpp
+
+mocs/moc_remotedbmgr.cpp: ../../src/remotedb.h \
+ ../../src/remote.h \
+ ../../src/rating.h \
+ ../../src/remotedbmgr.h
+ /usr/bin/moc-qt4 $(DEFINES) $(INCPATH) ../../src/remotedbmgr.h -o mocs/moc_remotedbmgr.cpp
+
+mocs/moc_remote.cpp: ../../src/rating.h \
+ ../../src/remote.h
+ /usr/bin/moc-qt4 $(DEFINES) $(INCPATH) ../../src/remote.h -o mocs/moc_remote.cpp
+
+compiler_rcc_make_all:
+compiler_rcc_clean:
+compiler_image_collection_make_all: qmake_image_collection.cpp
+compiler_image_collection_clean:
+ -$(DEL_FILE) qmake_image_collection.cpp
+compiler_moc_source_make_all:
+compiler_moc_source_clean:
+compiler_uic_make_all:
+compiler_uic_clean:
+compiler_yacc_decl_make_all:
+compiler_yacc_decl_clean:
+compiler_yacc_impl_make_all:
+compiler_yacc_impl_clean:
+compiler_lex_make_all:
+compiler_lex_clean:
+compiler_clean: compiler_moc_header_clean
+
+####### Compile
+
+objs/qnetworkreply.o: ../stubs/qnetworkreply.cpp ../stubs/qnetworkreply.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o objs/qnetworkreply.o ../stubs/qnetworkreply.cpp
+
+objs/qnetworkaccessmanager.o: ../stubs/qnetworkaccessmanager.cpp ../stubs/qnetworkreply.h \
+ ../stubs/qnetworkaccessmanager.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o objs/qnetworkaccessmanager.o ../stubs/qnetworkaccessmanager.cpp
+
+objs/ut_remotedbmgr.o: ut_remotedbmgr.cpp ut_remotedbmgr.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o objs/ut_remotedbmgr.o ut_remotedbmgr.cpp
+
+objs/remotedbmgr.o: ../../src/remotedbmgr.cpp ../../src/remotedbmgr.h \
+ ../../src/remotedb.h \
+ ../../src/remote.h \
+ ../../src/rating.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o objs/remotedbmgr.o ../../src/remotedbmgr.cpp
+
+objs/remote.o: ../../src/remote.cpp ../../src/remote.h \
+ ../../src/rating.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o objs/remote.o ../../src/remote.cpp
+
+objs/rating.o: ../../src/rating.cpp ../../src/rating.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o objs/rating.o ../../src/rating.cpp
+
+objs/qsettings.o: ../stubs/qsettings.cpp ../stubs/qsettings.h
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o objs/qsettings.o ../stubs/qsettings.cpp
+
+objs/moc_ut_remotedbmgr.o: mocs/moc_ut_remotedbmgr.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o objs/moc_ut_remotedbmgr.o mocs/moc_ut_remotedbmgr.cpp
+
+objs/moc_remotedbmgr.o: mocs/moc_remotedbmgr.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o objs/moc_remotedbmgr.o mocs/moc_remotedbmgr.cpp
+
+objs/moc_remote.o: mocs/moc_remote.cpp
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o objs/moc_remote.o mocs/moc_remote.cpp
+
+####### Install
+
+install: FORCE
+
+uninstall: FORCE
+
+FORCE:
+