TEST(ImageResourceTest, CancelOnDetach) { KURL testURL(ParsedURLString, "http://www.test.com/cancelTest.html"); ScopedRegisteredURL scopedRegisteredURL(testURL); ResourceFetcher* fetcher = ResourceFetcher::create(ImageResourceTestMockFetchContext::create()); // Emulate starting a real load. ImageResource* cachedImage = ImageResource::create(ResourceRequest(testURL)); cachedImage->setIdentifier(createUniqueIdentifier()); fetcher->startLoad(cachedImage); memoryCache()->add(cachedImage); Persistent<MockImageResourceClient> client = new MockImageResourceClient(cachedImage); EXPECT_EQ(Resource::Pending, cachedImage->getStatus()); // The load should still be alive, but a timer should be started to cancel the // load inside removeClient(). client->removeAsClient(); EXPECT_EQ(Resource::Pending, cachedImage->getStatus()); EXPECT_TRUE(memoryCache()->resourceForURL(testURL)); // Trigger the cancel timer, ensure the load was cancelled and the resource // was evicted from the cache. blink::testing::runPendingTasks(); EXPECT_EQ(Resource::LoadError, cachedImage->getStatus()); EXPECT_FALSE(memoryCache()->resourceForURL(testURL)); }
TEST(ImageResourceTest, CancelOnDetach) { KURL testURL(ParsedURLString, "http://www.test.com/cancelTest.html"); URLTestHelpers::registerMockedURLLoad(testURL, "cancelTest.html", "text/html"); ResourceFetcher* fetcher = ResourceFetcher::create(nullptr); // Emulate starting a real load. ResourcePtr<ImageResource> cachedImage = new ImageResource(ResourceRequest(testURL), nullptr); cachedImage->setIdentifier(createUniqueIdentifier()); cachedImage->load(fetcher, ResourceLoaderOptions()); memoryCache()->add(cachedImage.get()); MockImageResourceClient client(cachedImage); EXPECT_EQ(Resource::Pending, cachedImage->status()); // The load should still be alive, but a timer should be started to cancel the load inside removeClient(). client.removeAsClient(); EXPECT_EQ(Resource::Pending, cachedImage->status()); EXPECT_NE(reinterpret_cast<Resource*>(0), memoryCache()->resourceForURL(testURL)); // Trigger the cancel timer, ensure the load was cancelled and the resource was evicted from the cache. blink::testing::runPendingTasks(); EXPECT_EQ(Resource::LoadError, cachedImage->status()); EXPECT_EQ(reinterpret_cast<Resource*>(0), memoryCache()->resourceForURL(testURL)); Platform::current()->unitTestSupport()->unregisterMockedURL(testURL); }
KstVectorDialogI::KstVectorDialogI(QWidget* parent, const char* name, bool modal, WFlags fl) : KstDataDialog(parent, name, modal, fl) { _w = new VectorDialogWidget(_contents); setMultiple(true); _inTest = false; _w->FileName->completionObject()->setDir(QDir::currentDirPath()); _w->FileName->setMode(KFile::File | KFile::Directory | KFile::ExistingOnly); connect(_w->FileName, SIGNAL(textChanged(const QString&)), this, SLOT(updateCompletion())); connect(_w->_configure, SIGNAL(clicked()), this, SLOT(configureSource())); connect(_w->_readFromSource, SIGNAL(clicked()), this, SLOT(enableSource())); connect(_w->_generateX, SIGNAL(clicked()), this, SLOT(enableGenerate())); connect(_w->_connect, SIGNAL(clicked()), this, SLOT(testURL())); // connections for multiple edit mode connect(_w->_kstDataRange->CountFromEnd, SIGNAL(clicked()), this, SLOT(setCountFromEndDirty())); connect(_w->_kstDataRange->ReadToEnd, SIGNAL(clicked()), this, SLOT(setReadToEndDirty())); connect(_w->_kstDataRange->DoFilter, SIGNAL(clicked()), this, SLOT(setDoFilterDirty())); connect(_w->_kstDataRange->DoSkip, SIGNAL(clicked()), this, SLOT(setDoSkipDirty())); _w->_configure->setEnabled(false); _fieldCompletion = _w->Field->completionObject(); _w->Field->setAutoDeleteCompletionObject(true); setFixedHeight(height()); _configWidget = 0L; _w->Field->setEnabled(false); _ok->setEnabled(_w->Field->isEnabled()); _legendLabel->hide(); _legendText->hide(); }
TEST(ImageResourceTest, MultipartImage) { ResourceFetcher* fetcher = ResourceFetcher::create(nullptr); KURL testURL(ParsedURLString, "http://www.test.com/cancelTest.html"); URLTestHelpers::registerMockedURLLoad(testURL, "cancelTest.html", "text/html"); // Emulate starting a real load, but don't expect any "real" WebURLLoaderClient callbacks. ResourcePtr<ImageResource> cachedImage = new ImageResource(ResourceRequest(testURL), nullptr); cachedImage->setIdentifier(createUniqueIdentifier()); cachedImage->load(fetcher, ResourceLoaderOptions()); Platform::current()->unitTestSupport()->unregisterMockedURL(testURL); MockImageResourceClient client(cachedImage); EXPECT_EQ(Resource::Pending, cachedImage->status()); // Send the multipart response. No image or data buffer is created. // Note that the response must be routed through ResourceLoader to // ensure the load is flagged as multipart. ResourceResponse multipartResponse(KURL(), "multipart/x-mixed-replace", 0, nullAtom, String()); cachedImage->loader()->didReceiveResponse(nullptr, WrappedResourceResponse(multipartResponse), nullptr); ASSERT_FALSE(cachedImage->resourceBuffer()); ASSERT_FALSE(cachedImage->hasImage()); ASSERT_EQ(client.imageChangedCount(), 0); ASSERT_FALSE(client.notifyFinishedCalled()); // Send the response for the first real part. No image or data buffer is created. const char* svgData = "<svg xmlns='http://www.w3.org/2000/svg' width='1' height='1'><rect width='1' height='1' fill='green'/></svg>"; unsigned svgDataLength = strlen(svgData); ResourceResponse payloadResponse(KURL(), "image/svg+xml", svgDataLength, nullAtom, String()); cachedImage->loader()->didReceiveResponse(nullptr, WrappedResourceResponse(payloadResponse), nullptr); ASSERT_FALSE(cachedImage->resourceBuffer()); ASSERT_FALSE(cachedImage->hasImage()); ASSERT_EQ(client.imageChangedCount(), 0); ASSERT_FALSE(client.notifyFinishedCalled()); // The first bytes arrive. The data buffer is created, but no image is created. cachedImage->appendData(svgData, svgDataLength); ASSERT_TRUE(cachedImage->resourceBuffer()); ASSERT_EQ(cachedImage->resourceBuffer()->size(), svgDataLength); ASSERT_FALSE(cachedImage->hasImage()); ASSERT_EQ(client.imageChangedCount(), 0); ASSERT_FALSE(client.notifyFinishedCalled()); // This part finishes. The image is created, callbacks are sent, and the data buffer is cleared. cachedImage->finish(); ASSERT_FALSE(cachedImage->resourceBuffer()); ASSERT_FALSE(cachedImage->errorOccurred()); ASSERT_TRUE(cachedImage->hasImage()); ASSERT_FALSE(cachedImage->image()->isNull()); ASSERT_EQ(cachedImage->image()->width(), 1); ASSERT_EQ(cachedImage->image()->height(), 1); ASSERT_EQ(client.imageChangedCount(), 2); ASSERT_TRUE(client.notifyFinishedCalled()); }
KstVectorDialogI::KstVectorDialogI(QWidget* parent, const char* name, bool modal, WFlags fl) : KstDataDialog(parent, name, modal, fl) { _w = new VectorDialogWidget(_contents); setMultiple(true); _inTest = false; _w->FileName->completionObject()->setDir(QDir::currentDirPath()); _w->FileName->setMode(KFile::File | KFile::Directory | KFile::ExistingOnly); connect(_w->FileName, SIGNAL(openFileDialog(KURLRequester *)), this, SLOT(selectFolder())); connect(_w->FileName, SIGNAL(textChanged(const QString&)), this, SLOT(updateCompletion())); connect(_w->_configure, SIGNAL(clicked()), this, SLOT(configureSource())); connect(_w->_readFromSource, SIGNAL(clicked()), this, SLOT(enableSource())); connect(_w->_generateX, SIGNAL(clicked()), this, SLOT(enableGenerate())); connect(_w->_connect, SIGNAL(clicked()), this, SLOT(testURL())); // connections for multiple edit mode connect(_w->_kstDataRange->CountFromEnd, SIGNAL(clicked()), this, SLOT(setCountFromEndDirty())); connect(_w->_kstDataRange->ReadToEnd, SIGNAL(clicked()), this, SLOT(setReadToEndDirty())); connect(_w->_kstDataRange->DoFilter, SIGNAL(clicked()), this, SLOT(setDoFilterDirty())); connect(_w->_kstDataRange->DoSkip, SIGNAL(clicked()), this, SLOT(setDoSkipDirty())); // for apply button connect(_w->_readFromSource, SIGNAL(clicked()), this, SLOT(wasModifiedApply())); connect(_w->_generateX, SIGNAL(clicked()), this, SLOT(wasModifiedApply())); connect(_w->_configure, SIGNAL(clicked()), this, SLOT(wasModifiedApply())); connect(_w->FileName, SIGNAL(textChanged(const QString&)), this, SLOT(wasModifiedApply())); connect(_w->Field, SIGNAL(highlighted(int)), this, SLOT(wasModifiedApply())); connect(_w->Field, SIGNAL(completion(const QString&)), this, SLOT(wasModifiedApply())); connect(_w->_N, SIGNAL(valueChanged(int)), this, SLOT(wasModifiedApply())); connect(_w->_N->child("qt_spinbox_edit"), SIGNAL(textChanged(const QString&)), this, SLOT(wasModifiedApply())); connect(_w->_xMin, SIGNAL(textChanged(const QString&)), this, SLOT(wasModifiedApply())); connect(_w->_xMax, SIGNAL(textChanged(const QString&)), this, SLOT(wasModifiedApply())); connect(_w->_kstDataRange->F0, SIGNAL(textChanged(const QString&)), this, SLOT(wasModifiedApply())); connect(_w->_kstDataRange->_startUnits, SIGNAL(highlighted(int)), this, SLOT(wasModifiedApply())); connect(_w->_kstDataRange->N, SIGNAL(textChanged(const QString&)), this, SLOT(wasModifiedApply())); connect(_w->_kstDataRange->_rangeUnits, SIGNAL(highlighted(int)), this, SLOT(wasModifiedApply())); connect(_w->_kstDataRange->CountFromEnd, SIGNAL(clicked()), this, SLOT(wasModifiedApply())); connect(_w->_kstDataRange->ReadToEnd, SIGNAL(clicked()), this, SLOT(wasModifiedApply())); connect(_w->_kstDataRange->DoSkip, SIGNAL(clicked()), this, SLOT(wasModifiedApply())); connect(_w->_kstDataRange->Skip, SIGNAL(valueChanged(int)), this, SLOT(wasModifiedApply())); connect(_w->_kstDataRange->DoFilter, SIGNAL(clicked()), this, SLOT(wasModifiedApply())); _w->_configure->setEnabled(false); _fieldCompletion = _w->Field->completionObject(); _w->Field->setAutoDeleteCompletionObject(true); setFixedHeight(height()); _configWidget = 0L; _w->Field->setEnabled(false); _ok->setEnabled(_w->Field->isEnabled()); _legendLabel->hide(); _legendText->hide(); }
// // This test makes sure that parsing one URL relative to another works // correctly. The tests used here come from one of the internet RFCs on // generic URI syntax. A single base URL is created, then a number of // relative URLs are parsed against it and the results compared to the // expected result. // static bool relativeURLTest() { static struct TestEntry { const XMLCh* relative; const XMLCh* result; } testList[] = { { L"g" , L"http://a/b/c/g" } , { L"./g" , L"http://a/b/c/g" } , { L"g/" , L"http://a/b/c/g/" } , { L"/g" , L"http://a/g" } , { L"?y" , L"http://a/b/c/?y" } , { L"g?y" , L"http://a/b/c/g?y" } , { L"#s" , L"http://a/b/c/d;p#s" } , { L"g#s" , L"http://a/b/c/g#s" } , { L"g?y#s" , L"http://a/b/c/g?y#s" } , { L";x" , L"http://a/b/c/;x" } , { L"g;x" , L"http://a/b/c/g;x" } , { L"g;x?y#s", L"http://a/b/c/g;x?y#s" } , { L"." , L"http://a/b/c/" } , { L"./" , L"http://a/b/c/" } , { L".." , L"http://a/b/" } , { L"../" , L"http://a/b/" } , { L"../g" , L"http://a/b/g" } , { L"../.." , L"http://a/" } , { L"../../" , L"http://a/" } , { L"../../g", L"http://a/g" } }; const unsigned int testCount = sizeof(testList) / sizeof(testList[0]); // This is the base URL against which the tests are run XMLURL baseURL(L"http://a/b/c/d;p?q"); bool retVal = true; for (unsigned int index = 0; index < testCount; index++) { XMLURL testURL(baseURL, testList[index].relative); if (XMLString::compareString(testURL.getURLText(), testList[index].result)) { XERCES_STD_QUALIFIER wcout << L"Expected URL: " << testList[index].result << L" but got: " << testURL.getURLText() << XERCES_STD_QUALIFIER endl; retVal = false; } } return retVal; };
TEST(ImageResourceTest, CancelOnDecodeError) { KURL testURL(ParsedURLString, "http://www.test.com/cancelTest.html"); ScopedRegisteredURL scopedRegisteredURL(testURL); ResourceFetcher* fetcher = ResourceFetcher::create(ImageResourceTestMockFetchContext::create()); FetchRequest request(testURL, FetchInitiatorInfo()); ImageResource* cachedImage = ImageResource::fetch(request, fetcher); cachedImage->loader()->didReceiveResponse( nullptr, WrappedResourceResponse(ResourceResponse( testURL, "image/jpeg", 18, nullAtom, String())), nullptr); cachedImage->loader()->didReceiveData(nullptr, "notactuallyanimage", 18, 18, 18); EXPECT_EQ(Resource::DecodeError, cachedImage->getStatus()); EXPECT_FALSE(cachedImage->isLoading()); }
TEST(ImageResourceTest, ReloadIfLoFi) { KURL testURL(ParsedURLString, "http://www.test.com/cancelTest.html"); URLTestHelpers::registerMockedURLLoad(testURL, "cancelTest.html", "text/html"); ResourceRequest request = ResourceRequest(testURL); request.setLoFiState(WebURLRequest::LoFiOn); ImageResource* cachedImage = ImageResource::create(request); cachedImage->setStatus(Resource::Pending); Persistent<MockImageResourceClient> client = new MockImageResourceClient(cachedImage); ResourceFetcher* fetcher = ResourceFetcher::create(ImageResourceTestMockFetchContext::create()); // Send the image response. Vector<unsigned char> jpeg = jpegImage(); ResourceResponse resourceResponse(KURL(), "image/jpeg", jpeg.size(), nullAtom, String()); resourceResponse.addHTTPHeaderField("chrome-proxy", "q=low"); cachedImage->responseReceived(resourceResponse, nullptr); cachedImage->appendData(reinterpret_cast<const char*>(jpeg.data()), jpeg.size()); cachedImage->finish(); ASSERT_FALSE(cachedImage->errorOccurred()); ASSERT_TRUE(cachedImage->hasImage()); ASSERT_FALSE(cachedImage->getImage()->isNull()); ASSERT_EQ(client->imageChangedCount(), 2); ASSERT_TRUE(client->notifyFinishedCalled()); ASSERT_TRUE(cachedImage->getImage()->isBitmapImage()); EXPECT_EQ(1, cachedImage->getImage()->width()); EXPECT_EQ(1, cachedImage->getImage()->height()); cachedImage->reloadIfLoFi(fetcher); ASSERT_FALSE(cachedImage->errorOccurred()); ASSERT_FALSE(cachedImage->resourceBuffer()); ASSERT_FALSE(cachedImage->hasImage()); ASSERT_EQ(client->imageChangedCount(), 3); cachedImage->loader()->didReceiveResponse(nullptr, WrappedResourceResponse(resourceResponse), nullptr); cachedImage->loader()->didReceiveData(nullptr, reinterpret_cast<const char*>(jpeg.data()), jpeg.size(), jpeg.size()); cachedImage->loader()->didFinishLoading(nullptr, 0.0, jpeg.size()); ASSERT_FALSE(cachedImage->errorOccurred()); ASSERT_TRUE(cachedImage->hasImage()); ASSERT_FALSE(cachedImage->getImage()->isNull()); ASSERT_TRUE(client->notifyFinishedCalled()); ASSERT_TRUE(cachedImage->getImage()->isBitmapImage()); }
KstMatrixDialogI::KstMatrixDialogI(QWidget* parent, const char* name, bool modal, WFlags fl) : KstDataDialog(parent, name, modal, fl) { _w = new MatrixDialogWidget(_contents); setMultiple(true); _inTest = false; _w->_fileName->completionObject()->setDir(QDir::currentDirPath()); connect(_w->_readFromSource, SIGNAL(clicked()), this, SLOT(updateEnables())); connect(_w->_generateGradient, SIGNAL(clicked()), this, SLOT(updateEnables())); connect(_w->_xStartCountFromEnd, SIGNAL(clicked()), this, SLOT(xStartCountFromEndClicked())); connect(_w->_yStartCountFromEnd, SIGNAL(clicked()), this, SLOT(yStartCountFromEndClicked())); connect(_w->_xNumStepsReadToEnd, SIGNAL(clicked()), this, SLOT(xNumStepsReadToEndClicked())); connect(_w->_yNumStepsReadToEnd, SIGNAL(clicked()), this, SLOT(yNumStepsReadToEndClicked())); connect(_w->_doSkip, SIGNAL(clicked()), this, SLOT(updateEnables())); _w->_fileName->setMode(KFile::File | KFile::Directory | KFile::ExistingOnly); connect(_w->_fileName, SIGNAL(textChanged(const QString&)), this, SLOT(updateCompletion())); connect(_w->_configure, SIGNAL(clicked()), this, SLOT(configureSource())); connect(_w->_readFromSource, SIGNAL(clicked()), this, SLOT(enableSource())); connect(_w->_generateGradient, SIGNAL(clicked()), this, SLOT(updateEnables())); connect(_w->_connect, SIGNAL(clicked()), this, SLOT(testURL())); _w->_configure->setEnabled(false); _fieldCompletion = _w->_field->completionObject(); _w->_field->setAutoDeleteCompletionObject(true); setFixedHeight(height()); _configWidget = 0L; _w->_field->setEnabled(false); _ok->setEnabled(_w->_field->isEnabled()); // connections for multiple edit mode connect(_w->_xStartCountFromEnd, SIGNAL(clicked()), this, SLOT(setXStartCountFromEndDirty())); connect(_w->_yStartCountFromEnd, SIGNAL(clicked()), this, SLOT(setYStartCountFromEndDirty())); connect(_w->_xNumStepsReadToEnd, SIGNAL(clicked()), this, SLOT(setXNumStepsReadToEndDirty())); connect(_w->_yNumStepsReadToEnd, SIGNAL(clicked()), this, SLOT(setYNumStepsReadToEndDirty())); connect(_w->_doSkip, SIGNAL(clicked()), this, SLOT(setDoSkipDirty())); connect(_w->_doAve, SIGNAL(clicked()), this, SLOT(setDoAveDirty())); adjustSize(); resize(minimumSizeHint()); setFixedHeight(height()); }
KstMatrixDialog::KstMatrixDialog(QWidget* parent, const char* name, bool modal, Qt::WindowFlags fl) : KstDataDialog(parent) { _w = new Ui::MatrixDialogWidget(); _w->setupUi(_contents); setMultiple(true); _inTest = false; // xxx _w->_fileName->completionObject()->setDir(QDir::currentPath()); connect(_w->_readFromSource, SIGNAL(clicked()), this, SLOT(updateEnables())); connect(_w->_generateGradient, SIGNAL(clicked()), this, SLOT(updateEnables())); connect(_w->_xStartCountFromEnd, SIGNAL(clicked()), this, SLOT(xStartCountFromEndClicked())); connect(_w->_yStartCountFromEnd, SIGNAL(clicked()), this, SLOT(yStartCountFromEndClicked())); connect(_w->_xNumStepsReadToEnd, SIGNAL(clicked()), this, SLOT(xNumStepsReadToEndClicked())); connect(_w->_yNumStepsReadToEnd, SIGNAL(clicked()), this, SLOT(yNumStepsReadToEndClicked())); connect(_w->_doSkip, SIGNAL(clicked()), this, SLOT(updateEnables())); // xxx _w->_fileName->setMode(KFile::File | KFile::Directory | KFile::ExistingOnly); // xxx connect(_w->_fileName, SIGNAL(openFileDialog(KURLRequester *)), this, SLOT(selectFolder())); // xxx connect(_w->_fileName, SIGNAL(textChanged(const QString&)), this, SLOT(updateCompletion())); connect(_w->_configure, SIGNAL(clicked()), this, SLOT(configureSource())); connect(_w->_readFromSource, SIGNAL(clicked()), this, SLOT(enableSource())); connect(_w->_generateGradient, SIGNAL(clicked()), this, SLOT(updateEnables())); connect(_w->_connect, SIGNAL(clicked()), this, SLOT(testURL())); _w->_configure->setEnabled(false); // xxx _fieldCompletion = _w->_field->completionObject(); // xxx _w->_field->setAutoDeleteCompletionObject(true); setFixedHeight(height()); _configWidget = 0L; _w->_field->setEnabled(false); _ok->setEnabled(_w->_field->isEnabled()); // // connections for multiple edit mode... // connect(_w->_xStartCountFromEnd, SIGNAL(clicked()), this, SLOT(setXStartCountFromEndDirty())); connect(_w->_yStartCountFromEnd, SIGNAL(clicked()), this, SLOT(setYStartCountFromEndDirty())); connect(_w->_xNumStepsReadToEnd, SIGNAL(clicked()), this, SLOT(setXNumStepsReadToEndDirty())); connect(_w->_yNumStepsReadToEnd, SIGNAL(clicked()), this, SLOT(setYNumStepsReadToEndDirty())); connect(_w->_doSkip, SIGNAL(clicked()), this, SLOT(setDoSkipDirty())); connect(_w->_doAve, SIGNAL(clicked()), this, SLOT(setDoAveDirty())); // // connections for apply button... // // xxx connect(_w->_fileName, SIGNAL(textChanged(const QString&)), this, SLOT(wasModifiedApply())); connect(_w->_field, SIGNAL(highlighted(int)), this, SLOT(wasModifiedApply())); connect(_w->_configure, SIGNAL(clicked()), this, SLOT(wasModifiedApply())); connect(_w->_xStart, SIGNAL(valueChanged(int)), this, SLOT(wasModifiedApply())); connect(_w->_yStart, SIGNAL(valueChanged(int)), this, SLOT(wasModifiedApply())); connect(_w->_xNumSteps, SIGNAL(valueChanged(int)), this, SLOT(wasModifiedApply())); connect(_w->_yNumSteps, SIGNAL(valueChanged(int)), this, SLOT(wasModifiedApply())); // xxx connect(_w->_xStart->child("qt_spinbox_edit"), SIGNAL(textChanged(const QString&)), this, SLOT(wasModifiedApply())); // xxx connect(_w->_yStart->child("qt_spinbox_edit"), SIGNAL(textChanged(const QString&)), this, SLOT(wasModifiedApply())); // xxx connect(_w->_xNumSteps->child("qt_spinbox_edit"), SIGNAL(textChanged(const QString&)), this, SLOT(wasModifiedApply())); // xxx connect(_w->_yNumSteps->child("qt_spinbox_edit"), SIGNAL(textChanged(const QString&)), this, SLOT(wasModifiedApply())); connect(_w->_xStartCountFromEnd, SIGNAL(clicked()), this, SLOT(wasModifiedApply())); connect(_w->_yStartCountFromEnd, SIGNAL(clicked()), this, SLOT(wasModifiedApply())); connect(_w->_xNumStepsReadToEnd, SIGNAL(clicked()), this, SLOT(wasModifiedApply())); connect(_w->_yNumStepsReadToEnd, SIGNAL(clicked()), this, SLOT(wasModifiedApply())); connect(_w->_doSkip, SIGNAL(clicked()), this, SLOT(wasModifiedApply())); connect(_w->_skip, SIGNAL(valueChanged(int)), this, SLOT(wasModifiedApply())); // xxx connect(_w->_skip->child("qt_spinbox_edit"), SIGNAL(textChanged(const QString&)), this, SLOT(wasModifiedApply())); connect(_w->_doAve, SIGNAL(clicked()), this, SLOT(wasModifiedApply())); connect(_w->_gradientX, SIGNAL(clicked()), this, SLOT(wasModifiedApply())); connect(_w->_gradientY, SIGNAL(clicked()), this, SLOT(wasModifiedApply())); connect(_w->_gradientZAtMin, SIGNAL(textChanged(const QString&)), this, SLOT(wasModifiedApply())); connect(_w->_gradientZAtMax, SIGNAL(textChanged(const QString&)), this, SLOT(wasModifiedApply())); connect(_w->_nX, SIGNAL(valueChanged(int)), this, SLOT(wasModifiedApply())); connect(_w->_nY, SIGNAL(valueChanged(int)), this, SLOT(wasModifiedApply())); connect(_w->_minX, SIGNAL(textChanged(const QString&)), this, SLOT(wasModifiedApply())); connect(_w->_minY, SIGNAL(textChanged(const QString&)), this, SLOT(wasModifiedApply())); connect(_w->_xStep, SIGNAL(textChanged(const QString&)), this, SLOT(wasModifiedApply())); connect(_w->_yStep, SIGNAL(textChanged(const QString&)), this, SLOT(wasModifiedApply())); adjustSize(); resize(minimumSizeHint()); setFixedHeight(height()); }
int main(int argc, char **argv) { if (test_common_init(&argc, &argv) != 0) return -1; if (argc < 2) { printusage(); return 0; } { nsCOMPtr<nsIServiceManager> servMan; NS_InitXPCOM2(getter_AddRefs(servMan), nullptr, nullptr); // end of all messages from register components... printf("------------------\n\n"); int32_t urlFactory = URL_FACTORY_DEFAULT; bool bMakeAbs= false; char* relativePath = 0; char* url = 0; for (int i=1; i<argc; i++) { if (PL_strcasecmp(argv[i], "-std") == 0) { urlFactory = URL_FACTORY_STDURL; if (i+1 >= argc) { printusage(); return 0; } } else if (PL_strcasecmp(argv[i], "-abs") == 0) { if (!gFileIO) { relativePath = argv[i+1]; i++; } bMakeAbs = true; } else if (PL_strcasecmp(argv[i], "-file") == 0) { if (i+1 >= argc) { printusage(); return 0; } gFileIO = argv[i+1]; i++; } else { url = argv[i]; } } PRTime startTime = PR_Now(); if (bMakeAbs) { if (url && relativePath) { doMakeAbsTest(url, relativePath); } else { doMakeAbsTest(); } } else { if (gFileIO) { testURL(0, urlFactory); } else { testURL(url, urlFactory); } } if (gFileIO) { PRTime endTime = PR_Now(); printf("Elapsed time: %d micros.\n", (int32_t) (endTime - startTime)); } } // this scopes the nsCOMPtrs // no nsCOMPtrs are allowed to be alive when you call NS_ShutdownXPCOM return NS_FAILED(NS_ShutdownXPCOM(nullptr)) ? 1 : 0; }
int main() { //std::string stringtest = "3:hogAB"; //std::string numbertest = "i30eA"; //std::string numbertest2 = "i00e"; //std::string listtest= "l3:hogi30el2:bi3:bioi1eee"; //std::string ltest = "l3:hog2:go5:abcdee"; //std::string ltest2 = "l3:hog2:go5:abcdei10ee"; //std::string dic1= "d3:cow3:moo4:spam4:eggse"; // represents the dictionary { "cow" => "moo", "spam" => "eggs" } //std::string dic2="d4:spaml1:a1:bee"; // represents the dictionary { "spam" => [ "a", "b" ] } //std::string dic3="d9:publisher3:bob17:publisher-webpage15:www.example.com18:publisher.location4:homee"; // represents { "publisher" => "bob", "publisher-webpage" => "www.example.com", "publisher.location" => "home" } //std::string dic4="de"; // represents an empty dictionary {} // String test //BDecoder t1(stringtest, 0); //t1.decode(); //std::cout << boost::any_cast<std::string>(t1.get()) << std::endl; // Integer test //BDecoder t2(numbertest,0); //std::cout << t2.decode() << std::endl; //std::cout << boost::any_cast<int>(t2.get()) << std::endl; //BDecoder t3(numbertest2,0); //std::cout << t3.decode() << std::endl; // List test //BDecoder t4(listtest,0); //t4.decode(); //std::vector<boost::any> list = boost::any_cast<std::vector<boost::any>>(t4.get()); //std::cout << list.size() << std::endl; //std::cout << (list[0].type() == typeid(std::string)) << std::endl; // Dictionary test //BDecoder t5(dic1,0); //std::cout << t5.decode() << std::endl; //std::unordered_map<std::string,boost::any> dict = boost::any_cast<std::unordered_map<std::string,boost::any>>(t5.get()); ////std::cout << dict.size() << std::endl; //std::unordered_map<std::string,boost::any>::const_iterator got = dict.find ("cow"); //std::cout << boost::any_cast<std::string>(got->second) << std::endl; //BDecoder t6(dic2,0); //std::cout << t6.decode() << std::endl; //std::unordered_map<std::string,boost::any> dict = boost::any_cast<std::unordered_map<std::string,boost::any>>(t6.get()); ////std::cout << dict.size() << std::endl; //std::unordered_map<std::string,boost::any>::const_iterator got = dict.find ("spam"); //std::vector<boost::any> dictlist = boost::any_cast<std::vector<boost::any>>(got->second); //std::cout << boost::any_cast<std::string>(dictlist[1]) << std::endl; //BDecoder t7(dic4,0); //std::cout << t7.decode() << std::endl; //std::unordered_map<std::string,boost::any> dict = boost::any_cast<std::unordered_map<std::string,boost::any>>(t7.get()); //std::cout << dict.size() << std::endl; std::string singleFile("test.torrent"); TorrentFileParser single(singleFile); //std::cout << "getPieces: " << single.info.getPieces() << std::endl; //std::cout << "getPieceLength: " << single.info.getPieceLength() << std::endl; //std::cout << "getName: " << single.info.getName() << std::endl; //std::cout << "getPrivate: " << single.info.getPrivate() << std::endl; //std::cout << "getLength: " << single.info.getLength() << std::endl; //std::cout << "getMD5: " << single.info.getMD5() << std::endl; //std::cout << "getNumberOfFiles: " << single.info.getNumberOfFiles() << std::endl; //std::cout << "getRawInfoDict: " << single.info.string << std::endl; //std::cout << "Info: getHash: " << single.info.getHash() << " of length " << single.info.getHash().length() << std::endl; std::string testURL("test"); std::string infoHash = single.info.getHash(); //Tracker trackHandler(testURL, infoHash); //std::cout << "URL encoded hash: " << trackHandler.urlEncode(single.info.getHash()) << std::endl; std::string multipleFile("multi.torrent"); TorrentFileParser multi(multipleFile); std::cout << "getPieces: " << multi.info.getPieces() << std::endl; std::cout << "getPieceLength: " << multi.info.getPieceLength() << std::endl; std::cout << "getName: " << multi.info.getName() << std::endl; std::cout << "getPrivate: " << multi.info.getPrivate() << std::endl; std::cout << "getLength: " << multi.info.getLength() << std::endl; std::cout << "getMD5: " << multi.info.getMD5() << std::endl; std::cout << "getNumberOfFiles: " << multi.info.getNumberOfFiles() << std::endl; //int i=1; //for(boost::any file : multi.info.files) { //std::cout << "File " << i++ << std::endl; //std::unordered_map<std::string, boost::any> dict = boost::any_cast<std::unordered_map<std::string, boost::any>>(file); //std::cout << "length=" << InfoParser::fileLength(dict) << std::endl; //std::cout << "path=" << InfoParser::filePath(dict) << std::endl; //std::cout << "md5=" << InfoParser::fileMD5(dict) << std::endl; //} }
void run () { testURL (); }
int main() { // Do the platform initialization try { XMLPlatformUtils::Initialize(); } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER wcout << L"Parser Init Failed!\n INFO: (" << toCatch.getSrcFile() << L"." << toCatch.getSrcLine() << L") -" << toCatch.getMessage() << XERCES_STD_QUALIFIER endl; return 0xFFFF; } XERCES_STD_QUALIFIER wcout << L"\nXML4C2 Core Utilities Unit Tester\n" << XERCES_STD_QUALIFIER endl; // This value will return the number of failed tests int retVal = 0; try { // ------------------------------------------------------------------- // Test the basic transcoding services // ------------------------------------------------------------------- if (!testTranscoders()) { XERCES_STD_QUALIFIER wcout << L"Transcoder tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the String class // ------------------------------------------------------------------- if (!testString()) { XERCES_STD_QUALIFIER wcout << L"String tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the CountedPointerTo template class // ------------------------------------------------------------------- if (!testCountedPointer()) { XERCES_STD_QUALIFIER wcout << L"CountedPointerTo tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the URL class // ------------------------------------------------------------------- if (!testURL()) { XERCES_STD_QUALIFIER wcout << L"URL tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the ValueVectorOf template class // ------------------------------------------------------------------- if (!testValueVector()) { XERCES_STD_QUALIFIER wcout << L"ValueVectorOf tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the ValueArrayOf template class // ------------------------------------------------------------------- if (!testValueArray()) { XERCES_STD_QUALIFIER wcout << L"ValueArrayOf tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the ValueStackOf template class // ------------------------------------------------------------------- if (!testValueStack()) { XERCES_STD_QUALIFIER wcout << L"ValueStackOf tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the RefArrayOf template class // ------------------------------------------------------------------- if (!testRefArray()) { XERCES_STD_QUALIFIER wcout << L"RefArrayOf tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the RefStackOf template class // ------------------------------------------------------------------- if (!testRefStack()) { XERCES_STD_QUALIFIER wcout << L"RefStackOf tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the RefVectorOf template class // ------------------------------------------------------------------- if (!testRefVector()) { XERCES_STD_QUALIFIER wcout << L"RefVectorOf tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the RefHashtableOf template class // ------------------------------------------------------------------- if (!testRefHashTable()) { XERCES_STD_QUALIFIER wcout << L"RefHashTableOf tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the BitSet class // ------------------------------------------------------------------- if (!testBitSet()) { XERCES_STD_QUALIFIER wcout << L"BitSet tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER wcout << L"Exception During Test!\n INFO: (" << toCatch.getSrcFile() << L"." << toCatch.getSrcLine() << L") -" << toCatch.getMessage() << XERCES_STD_QUALIFIER endl; return 0xFFFF; } // If we failed any tests, display a message XERCES_STD_QUALIFIER wcout << L"--------------------------------\n"; if (retVal == 0) XERCES_STD_QUALIFIER wcout << L"<<PASSED>>: All tests passed\n"; else XERCES_STD_QUALIFIER wcout << L"<<FAILED>>: Some tests failed\n"; XERCES_STD_QUALIFIER wcout << L"--------------------------------\n" << XERCES_STD_QUALIFIER endl; return retVal; }
TEST(ImageResourceTest, ReloadIfLoFiDuringFetch) { KURL testURL(ParsedURLString, "http://www.test.com/cancelTest.html"); ScopedRegisteredURL scopedRegisteredURL(testURL); ResourceRequest request(testURL); request.setLoFiState(WebURLRequest::LoFiOn); FetchRequest fetchRequest(request, FetchInitiatorInfo()); ResourceFetcher* fetcher = ResourceFetcher::create(ImageResourceTestMockFetchContext::create()); ImageResource* cachedImage = ImageResource::fetch(fetchRequest, fetcher); Persistent<MockImageResourceClient> client = new MockImageResourceClient(cachedImage); // Send the image response. Vector<unsigned char> jpeg = jpegImage(); ResourceResponse initialResourceResponse(testURL, "image/jpeg", jpeg.size(), nullAtom, String()); initialResourceResponse.addHTTPHeaderField("chrome-proxy", "q=low"); cachedImage->loader()->didReceiveResponse( nullptr, WrappedResourceResponse(initialResourceResponse)); cachedImage->loader()->didReceiveData( nullptr, reinterpret_cast<const char*>(jpeg.data()), jpeg.size(), jpeg.size(), jpeg.size()); EXPECT_FALSE(cachedImage->errorOccurred()); ASSERT_TRUE(cachedImage->hasImage()); EXPECT_FALSE(cachedImage->getImage()->isNull()); EXPECT_EQ(1, client->imageChangedCount()); EXPECT_EQ(jpeg.size(), client->encodedSizeOnLastImageChanged()); EXPECT_FALSE(client->notifyFinishedCalled()); EXPECT_TRUE(cachedImage->getImage()->isBitmapImage()); EXPECT_EQ(1, cachedImage->getImage()->width()); EXPECT_EQ(1, cachedImage->getImage()->height()); // Call reloadIfLoFi() while the image is still loading. cachedImage->reloadIfLoFi(fetcher); EXPECT_FALSE(cachedImage->errorOccurred()); EXPECT_FALSE(cachedImage->resourceBuffer()); EXPECT_FALSE(cachedImage->hasImage()); EXPECT_EQ(2, client->imageChangedCount()); EXPECT_EQ(0U, client->encodedSizeOnLastImageChanged()); // The client should not have been notified of completion yet, since the image // is still loading. EXPECT_FALSE(client->notifyFinishedCalled()); Vector<unsigned char> jpeg2 = jpegImage2(); cachedImage->loader()->didReceiveResponse( nullptr, WrappedResourceResponse(ResourceResponse( testURL, "image/jpeg", jpeg.size(), nullAtom, String())), nullptr); cachedImage->loader()->didReceiveData( nullptr, reinterpret_cast<const char*>(jpeg2.data()), jpeg2.size(), jpeg2.size(), jpeg2.size()); cachedImage->loader()->didFinishLoading(nullptr, 0.0, jpeg2.size()); EXPECT_FALSE(cachedImage->errorOccurred()); ASSERT_TRUE(cachedImage->hasImage()); EXPECT_FALSE(cachedImage->getImage()->isNull()); EXPECT_EQ(jpeg2.size(), client->encodedSizeOnLastImageChanged()); // The client should have been notified of completion only after the reload // completed. EXPECT_TRUE(client->notifyFinishedCalled()); EXPECT_EQ(jpeg2.size(), client->encodedSizeOnNotifyFinished()); EXPECT_EQ(jpeg2.size(), client->encodedSizeOnImageNotifyFinished()); EXPECT_TRUE(cachedImage->getImage()->isBitmapImage()); EXPECT_EQ(50, cachedImage->getImage()->width()); EXPECT_EQ(50, cachedImage->getImage()->height()); }
static bool basicURLTest() { static BasicTestEntry testList[] = { { L"file://*****:*****@host/path1/path2/file.txt?query#fragment" , L"file://*****:*****@host/path1/path2/file.txt?query#fragment" , XMLURL::File , 0 , L"fragment" , L"host" , L"/path1/path2/file.txt" , L"password" , L"query" , L"user" } , { L"file:///path2/file.txt?query#fragment" , L"file:///path2/file.txt?query#fragment" , XMLURL::File , 0 , L"fragment" , 0 , L"/path2/file.txt" , 0 , L"query" , 0 } , { L"#fragment" , L"#fragment" , XMLURL::Unknown , 0 , L"fragment" , 0 , 0 , 0 , 0 , 0 } , { L"file://user@host/path1/path2/file.txt#fragment" , L"file://user@host/path1/path2/file.txt#fragment" , XMLURL::File , 0 , L"fragment" , L"host" , L"/path1/path2/file.txt" , 0 , 0 , L"user" } , { L" file://user@host/path1/path2/file.txt#fragment" , L"file://user@host/path1/path2/file.txt#fragment" , XMLURL::File , 0 , L"fragment" , L"host" , L"/path1/path2/file.txt" , 0 , 0 , L"user" } , { L"http://*****:*****@" , L"ftp://user@" , XMLURL::FTP , 21 , 0 , 0 , 0 , 0 , 0 , L"user" } }; const unsigned int testCount = sizeof(testList) / sizeof(testList[0]); bool retVal = true; // // Do a run where we construct the URL over and over for each // test. // unsigned int index; for (index = 0; index < testCount; index++) { // Force full destruction each time { XMLURL testURL(testList[index].orgURL); // Call the comparison function if (!checkBasicResult(testURL, testList[index])) retVal = false; } } // // Do a run where we use a single URL object and just reset it over // and over again. // XMLURL testURL; for (index = 0; index < testCount; index++) { testURL.setURL(testList[index].orgURL); // Call the comparison function if (!checkBasicResult(testURL, testList[index])) retVal = false; } return retVal; }
TEST(ImageResourceTest, MultipartImage) { ResourceFetcher* fetcher = ResourceFetcher::create(ImageResourceTestMockFetchContext::create()); KURL testURL(ParsedURLString, "http://www.test.com/cancelTest.html"); ScopedRegisteredURL scopedRegisteredURL(testURL); // Emulate starting a real load, but don't expect any "real" // WebURLLoaderClient callbacks. ImageResource* cachedImage = ImageResource::create(ResourceRequest(testURL)); cachedImage->setIdentifier(createUniqueIdentifier()); fetcher->startLoad(cachedImage); Persistent<MockImageResourceClient> client = new MockImageResourceClient(cachedImage); EXPECT_EQ(Resource::Pending, cachedImage->getStatus()); // Send the multipart response. No image or data buffer is created. Note that // the response must be routed through ResourceLoader to ensure the load is // flagged as multipart. ResourceResponse multipartResponse(KURL(), "multipart/x-mixed-replace", 0, nullAtom, String()); multipartResponse.setMultipartBoundary("boundary", strlen("boundary")); cachedImage->loader()->didReceiveResponse( nullptr, WrappedResourceResponse(multipartResponse), nullptr); EXPECT_FALSE(cachedImage->resourceBuffer()); EXPECT_FALSE(cachedImage->hasImage()); EXPECT_EQ(0, client->imageChangedCount()); EXPECT_FALSE(client->notifyFinishedCalled()); EXPECT_EQ("multipart/x-mixed-replace", cachedImage->response().mimeType()); const char firstPart[] = "--boundary\n" "Content-Type: image/svg+xml\n\n"; cachedImage->appendData(firstPart, strlen(firstPart)); // Send the response for the first real part. No image or data buffer is // created. EXPECT_FALSE(cachedImage->resourceBuffer()); EXPECT_FALSE(cachedImage->hasImage()); EXPECT_EQ(0, client->imageChangedCount()); EXPECT_FALSE(client->notifyFinishedCalled()); EXPECT_EQ("image/svg+xml", cachedImage->response().mimeType()); const char secondPart[] = "<svg xmlns='http://www.w3.org/2000/svg' width='1' height='1'><rect " "width='1' height='1' fill='green'/></svg>\n"; // The first bytes arrive. The data buffer is created, but no image is // created. cachedImage->appendData(secondPart, strlen(secondPart)); EXPECT_TRUE(cachedImage->resourceBuffer()); EXPECT_FALSE(cachedImage->hasImage()); EXPECT_EQ(0, client->imageChangedCount()); EXPECT_FALSE(client->notifyFinishedCalled()); // Add a client to check an assertion error doesn't happen // (crbug.com/630983). Persistent<MockImageResourceClient> client2 = new MockImageResourceClient(cachedImage); EXPECT_EQ(0, client2->imageChangedCount()); EXPECT_FALSE(client2->notifyFinishedCalled()); const char thirdPart[] = "--boundary"; cachedImage->appendData(thirdPart, strlen(thirdPart)); ASSERT_TRUE(cachedImage->resourceBuffer()); EXPECT_EQ(strlen(secondPart) - 1, cachedImage->resourceBuffer()->size()); // This part finishes. The image is created, callbacks are sent, and the data // buffer is cleared. cachedImage->loader()->didFinishLoading(nullptr, 0.0, 0); EXPECT_TRUE(cachedImage->resourceBuffer()); EXPECT_FALSE(cachedImage->errorOccurred()); ASSERT_TRUE(cachedImage->hasImage()); EXPECT_FALSE(cachedImage->getImage()->isNull()); EXPECT_EQ(1, cachedImage->getImage()->width()); EXPECT_EQ(1, cachedImage->getImage()->height()); EXPECT_EQ(1, client->imageChangedCount()); EXPECT_TRUE(client->notifyFinishedCalled()); EXPECT_EQ(1, client2->imageChangedCount()); EXPECT_TRUE(client2->notifyFinishedCalled()); }