Esempio n. 1
0
TEST_F(TrackExporterTest, DedupeList) {
    // Create a track list with a duplicate track, see that it gets deduped.
    QFileInfo fileinfo1(m_testDataDir.filePath("cover-test.ogg"));
    TrackPointer track1(TrackInfoObject::newTemporary(fileinfo1));
    TrackPointer track2(TrackInfoObject::newTemporary(fileinfo1));

    // Set up the worker and answerer.
    QList<TrackPointer> tracks;
    tracks.append(track1);
    tracks.append(track2);
    TrackExportWorker worker(m_exportDir.canonicalPath(), tracks);
    m_answerer.reset(new FakeOverwriteAnswerer(&worker));

    worker.run();
    EXPECT_TRUE(worker.wait(10000));

    EXPECT_EQ(1, m_answerer->currentProgress());
    EXPECT_EQ(1, m_answerer->currentProgressCount());

    // Both files should have been overwritten.
    QFileInfo newfile1(m_exportDir.filePath("cover-test.ogg"));
    EXPECT_TRUE(newfile1.exists());
    // Should only be one file
    QFileInfoList files =
                m_exportDir.entryInfoList(QDir::NoDotAndDotDot | QDir::Files);
    EXPECT_EQ(1, files.size());
}
Esempio n. 2
0
TEST_F(TrackExporterTest, SimpleListExport) {
    // Create a simple list of trackpointers and export them.
    QFileInfo fileinfo1(m_testDataDir.filePath("cover-test.ogg"));
    TrackPointer track1(TrackInfoObject::newTemporary(fileinfo1));
    QFileInfo fileinfo2(m_testDataDir.filePath("cover-test.flac"));
    TrackPointer track2(TrackInfoObject::newTemporary(fileinfo2));
    QFileInfo fileinfo3(m_testDataDir.filePath("cover-test.m4a"));
    TrackPointer track3(TrackInfoObject::newTemporary(fileinfo3));

    // An initializer list would be prettier here, but it doesn't compile
    // on MSVC or OSX.
    QList<TrackPointer> tracks;
    tracks.append(track1);
    tracks.append(track2);
    tracks.append(track3);
    TrackExportWorker worker(m_exportDir.canonicalPath(), tracks);
    m_answerer.reset(new FakeOverwriteAnswerer(&worker));

    worker.run();
    EXPECT_TRUE(worker.wait(10000));

    EXPECT_EQ(3, m_answerer->currentProgress());
    EXPECT_EQ(3, m_answerer->currentProgressCount());

    // The destination folder should have all the files.
    EXPECT_TRUE(QFileInfo(m_exportDir.filePath("cover-test.ogg")).exists());
    EXPECT_TRUE(QFileInfo(m_exportDir.filePath("cover-test.flac")).exists());
    EXPECT_TRUE(QFileInfo(m_exportDir.filePath("cover-test.m4a")).exists());
}
Esempio n. 3
0
static VALUE
cGraphicsView_scene_set(VALUE v_self, VALUE v_scene)
{
  track2("cGraphicsView_scene_set(self=%s,scene=%s)", v_self, v_scene);
  const RPP::QObject<QGraphicsView> self = v_self;
  const RPP::QObject<QGraphicsScene> scene = v_scene;
  self->setScene(scene);
  return scene;
}
Esempio n. 4
0
static VALUE
cVariantAnimation_startValue_set(VALUE v_self, VALUE v_start)
{
  track2("%s::startValue=%s", v_self, v_start);
  const RPP::QObject<QVariantAnimation> self = v_self;
  const QVariant qv = v2qvar_safe(v_start);
  trace("calling setStartValue");
  self->setStartValue(qv);
  trace("DONE");
  return v_self;
}
Esempio n. 5
0
static VALUE
cFont_pointSize_set(VALUE v_self, VALUE v_ptsz)
{
  const RPP::QFont self = v_self;
  self.check_frozen();
  RPP::Float ptsz = v_ptsz;
  track2("%s::pointSize := %s", self, ptsz);
  /* convolution
  if (ptsz.isFixnum())
    self->setPointSize(ptsz.to_i());
  else
  */
  self->setPointSizeF(ptsz);
  reattach_font(self);
  return v_ptsz;
}
Esempio n. 6
0
/* override */
static VALUE
cPropertyAnimation_startValue_set(VALUE v_self, VALUE v_start)
{
  track2("%s::startValue=%s", v_self, v_start);
  const RPP::QObject<QPropertyAnimation> self = v_self;
  /* If no target is set here, use parent.
   * If no propertyName is set here, use R_QT_DYNVALUE_PROPERTYID.
   * This assumes the parent can only have 1 animation at a time.
   * But it auto updates the value inside the parent!
   * Which I expect to be a DynamicAttribute anyway!
   */
  if (!self->targetObject())
    {
      const RPP::QObject<QObject> parent = self->parent(); 
      track1("no target, use parent %s", parent);
      self->setTargetObject(parent);
      /* Normally that would be the DynamicAttribute.
       *
       * It is now important that the handler is set.
       * Something like:
       *
       *    target.disconnect :dynamicPropertyChanged
       *    target.dynamicPropertyChanged do |name|
       *      val = property(name)
       *      apply_model val
       *    end
       *
       * And now in C++...
       */
      parent.call("disconnect", RPP::Symbol("dynamicPropertyChanged"));
      /* CONFUSING.
       * disconnect is NOT required at the moment, since
       * dynamicPropertyChanged is a ruby-signal and there can only be one 'slot' currently.
       */
      parent.call_with_block("dynamicPropertyChanged", dynamicPropertyChanged_block, parent);
    }
  if (self->propertyName().isEmpty())
    {
      const QVariant var = v2qvar_safe(v_start);
      const RPP::QObject<QObject> parent = self->parent(); 
      parent->setProperty(R_QT_DYNVALUE_PROPERTYID, var);
      trace("no propertyName set, use DYNVALUE magic");
      self->setPropertyName(QByteArray(R_QT_DYNVALUE_PROPERTYID));
    }
  return self.super(v_start); 
}
Esempio n. 7
0
TEST_F(TrackExporterTest, OverwriteSkip) {
    // Export a tracklist with two existing tracks -- overwrite one and skip
    // the other.
    QFileInfo fileinfo1(m_testDataDir.filePath("cover-test.ogg"));
    const qint64 fileSize1 = fileinfo1.size();
    TrackPointer track1(Track::newTemporary(fileinfo1));
    QFileInfo fileinfo2(m_testDataDir.filePath("cover-test.m4a"));
    TrackPointer track2(Track::newTemporary(fileinfo2));

    // Create empty versions at the destination so we can see if we actually
    // overwrote or skipped.
    QFile file1(m_exportDir.filePath("cover-test.ogg"));
    ASSERT_TRUE(file1.open(QIODevice::WriteOnly));
    file1.close();
    QFile file2(m_exportDir.filePath("cover-test.m4a"));
    ASSERT_TRUE(file2.open(QIODevice::WriteOnly));
    file2.close();

    // Set up the worker and answerer.
    QList<TrackPointer> tracks;
    tracks.append(track1);
    tracks.append(track2);
    TrackExportWorker worker(m_exportDir.canonicalPath(), tracks);
    m_answerer.reset(new FakeOverwriteAnswerer(&worker));
    m_answerer->setAnswer(QFileInfo(file1).canonicalFilePath(),
                           TrackExportWorker::OverwriteAnswer::OVERWRITE);
    m_answerer->setAnswer(QFileInfo(file2).canonicalFilePath(),
                           TrackExportWorker::OverwriteAnswer::SKIP);

    worker.run();
    EXPECT_TRUE(worker.wait(10000));

    EXPECT_EQ(2, m_answerer->currentProgress());
    EXPECT_EQ(2, m_answerer->currentProgressCount());

    // The destination folder should have both the files, one skipped and
    // one written.
    QFileInfo newfile1(m_exportDir.filePath("cover-test.ogg"));
    EXPECT_TRUE(newfile1.exists());
    EXPECT_EQ(fileSize1, newfile1.size());

    QFileInfo newfile2(m_exportDir.filePath("cover-test.m4a"));
    EXPECT_TRUE(newfile2.exists());
    EXPECT_EQ(0, newfile2.size());
}
Esempio n. 8
0
TEST_F(TrackExporterTest, Cancel) {
    // Export a tracklist with two existing tracks, but cancel before we do
    // anything.
    QFileInfo fileinfo1(m_testDataDir.filePath("cover-test.ogg"));
    TrackPointer track1(TrackInfoObject::newTemporary(fileinfo1));
    QFileInfo fileinfo2(m_testDataDir.filePath("cover-test.m4a"));
    TrackPointer track2(TrackInfoObject::newTemporary(fileinfo2));

    // Create empty version at the destination so we can see if we actually
    // canceled.
    QFile file2(m_exportDir.filePath("cover-test.m4a"));
    ASSERT_TRUE(file2.open(QIODevice::WriteOnly));
    file2.close();

    // Set up the worker and answerer.
    QList<TrackPointer> tracks;
    tracks.append(track1);
    tracks.append(track2);
    TrackExportWorker worker(m_exportDir.canonicalPath(), tracks);
    m_answerer.reset(new FakeOverwriteAnswerer(&worker));
    m_answerer->setAnswer(QFileInfo(file2).canonicalFilePath(),
                           TrackExportWorker::OverwriteAnswer::CANCEL);

    worker.run();
    EXPECT_TRUE(worker.wait(10000));

    EXPECT_EQ(-1, m_answerer->currentProgress());
    EXPECT_EQ(-1, m_answerer->currentProgressCount());

    // Both files should have been skipped because we canceled the process,
    // so the .ogg shouldn't exist at all.
    QFileInfo newfile1(m_exportDir.filePath("cover-test.ogg"));
    EXPECT_FALSE(newfile1.exists());

    QFileInfo newfile2(m_exportDir.filePath("cover-test.m4a"));
    EXPECT_TRUE(newfile2.exists());
    EXPECT_EQ(0, newfile2.size());
}
Esempio n. 9
0
TEST_F(TrackExporterTest, MungeFilename) {
    // Create a track list with a duplicate track in a different location,
    // see that the name gets munged.
    QFileInfo fileinfo1(m_testDataDir.filePath("cover-test.ogg"));
    TrackPointer track1(TrackInfoObject::newTemporary(fileinfo1));

    // Create a file with the same name in a different place.  Its filename
    // should be munged and the file still copied.
    QDir tempPath(QDir::tempPath());
    QFile file2(tempPath.filePath("cover-test.ogg"));
    QFileInfo fileinfo2(file2);
    ASSERT_TRUE(file2.open(QIODevice::WriteOnly));
    file2.close();
    TrackPointer track2(TrackInfoObject::newTemporary(fileinfo2));

    // Set up the worker and answerer.
    QList<TrackPointer> tracks;
    tracks.append(track1);
    tracks.append(track2);
    TrackExportWorker worker(m_exportDir.canonicalPath(), tracks);
    m_answerer.reset(new FakeOverwriteAnswerer(&worker));

    worker.run();
    EXPECT_TRUE(worker.wait(10000));

    EXPECT_EQ(2, m_answerer->currentProgress());
    EXPECT_EQ(2, m_answerer->currentProgressCount());

    QFileInfo newfile1(m_exportDir.filePath("cover-test.ogg"));
    EXPECT_TRUE(newfile1.exists());
    QFileInfo newfile2(m_exportDir.filePath("cover-test-0001.ogg"));
    EXPECT_TRUE(newfile2.exists());

    // Remove the track we created.
    tempPath.remove("cover-test.ogg");
}