コード例 #1
0
TEST(FileFsEnum, All)
{
    IFsEnum * enumObj = static_cast<IFsEnum*>(new CFileFsEnum);
    IFsEnumContext * enumContext = static_cast<IFsEnumContext*>(new CFileFsEnumContext);
    CTestEnumObserver * testObj = new CTestEnumObserver();
    IFsEnum * zip = new CZipFsEnum;
    IVirtualFs * container = static_cast<IVirtualFs*>(new CFileFs);

    if (!enumObj || !enumContext || !testObj || !zip || !container)
        goto EXIT;

    ASSERT_HRESULT_SUCCEEDED(enumContext->SetMaxDepth(-1));
    ASSERT_HRESULT_SUCCEEDED(enumContext->SetSearchPattern(L"*.*"));
    ASSERT_HRESULT_SUCCEEDED(container->Create(szSampleDir, 0));
    ASSERT_HRESULT_SUCCEEDED(enumContext->SetSearchContainer(container));
    ASSERT_HRESULT_SUCCEEDED(enumContext->SetFlags(IFsEnumContext::DetectOnly));
    ASSERT_HRESULT_SUCCEEDED(enumObj->AddObserver(testObj));
    ASSERT_HRESULT_SUCCEEDED(enumObj->AddArchiver(zip));
    ASSERT_HRESULT_SUCCEEDED(enumObj->Enum(enumContext));
    printf("\n\n Count = %d\n", testObj->GetFileCount());
    ASSERT_HRESULT_SUCCEEDED(enumObj->RemoveArchiver(zip));
    ASSERT_HRESULT_SUCCEEDED(enumObj->RemoveObserver(testObj));

EXIT:
    if (testObj) testObj->Release();
    if (container) container->Release();
    if (zip) zip->Release();
    if (enumContext) enumContext->Release();
    if (enumObj) enumObj->Release();
}
コード例 #2
0
TEST(FileFsAttribute, Size)
{
	IFsAttribute * fsAttr = new CFileFsAttribute();
	ASSERT_HRESULT_SUCCEEDED(fsAttr->SetFilePath(szTestcase));
	ULARGE_INTEGER fileSize;
	ASSERT_HRESULT_SUCCEEDED(fsAttr->Size(&fileSize));
	ASSERT_EQ(1024*1024, fileSize.QuadPart);
	fsAttr->Release();
}
コード例 #3
0
ファイル: ScriptEnvTest.cpp プロジェクト: flier/HTML5i
void CScriptEnvTest::LoadClass(CScriptEnvTest::DllGetClassObjectFunc fnDllGetClassObject, LPCTSTR name, REFCLSID clsid)
{
  CComPtr<IClassFactory> spFactory;

  ASSERT_HRESULT_SUCCEEDED(fnDllGetClassObject(clsid, __uuidof(IClassFactory), (LPVOID *) &spFactory));

  CComObjectNoLock<CClassFactoryConstructor> *ctor = new CComObjectNoLock<CClassFactoryConstructor>();

  ctor->Attach(CComBSTR(name), spFactory.Detach());

  m_host->m_items.Add(CComBSTR(name), ctor);

  ASSERT_HRESULT_SUCCEEDED(m_spEngine->AddNamedItem(name, 
    SCRIPTITEM_GLOBALMEMBERS | SCRIPTITEM_ISVISIBLE));  
}
コード例 #4
0
ファイル: ScriptEnvTest.cpp プロジェクト: flier/HTML5i
void CScriptEnvTest::InitEngine()
{
  CLSID clsidJavascript;

  ASSERT_HRESULT_SUCCEEDED(::CLSIDFromProgID(_T("JavaScript"), &clsidJavascript));

  ASSERT_HRESULT_SUCCEEDED(m_spEngine.CoCreateInstance(clsidJavascript));
  
  ASSERT_HRESULT_SUCCEEDED(m_spEngine->SetScriptSite(m_host.get()));  

  CComQIPtr<IActiveScriptParse> parser = m_spEngine;

  ASSERT_HRESULT_SUCCEEDED(parser->InitNew());

  ASSERT_EQ(SCRIPTSTATE_INITIALIZED, m_host->m_state);
}
コード例 #5
0
ファイル: ScriptEnvTest.cpp プロジェクト: flier/HTML5i
TEST_F(CScriptEnvTest, Properties)
{
  ASSERT_HRESULT_SUCCEEDED(ExecuteScript(_T("var canvas = new Context2D();")));

  EXCEPINFO exc;
  CComVariant result;

  ASSERT_HRESULT_SUCCEEDED(ExecuteScript(_T("canvas"), &exc, &result));

  ASSERT_EQ(VT_DISPATCH, result.vt);
  ASSERT_NE((IDispatch *) NULL, result.pdispVal);

  ASSERT_HRESULT_SUCCEEDED(ExecuteScript(_T("canvas.canvas"), &exc, &result));

  ASSERT_EQ(VT_DISPATCH, result.vt);
  ASSERT_EQ((IDispatch *) NULL, result.pdispVal);
}
コード例 #6
0
ファイル: ScriptEnvTest.cpp プロジェクト: flier/HTML5i
TEST_F(CScriptEnvTest, ExecuteScript)
{
  EXCEPINFO exc;
  CComVariant result;

  ASSERT_HRESULT_SUCCEEDED(ExecuteScript(_T("1+2"), &exc, &result));

  ASSERT_EQ(VT_I4, result.vt);
  ASSERT_EQ(3, result.intVal);

  ASSERT_EQ(SCRIPT_E_REPORTED, ExecuteScript(_T("nonexist"), &exc, &result));   
}
コード例 #7
0
ファイル: ScriptEnvTest.cpp プロジェクト: flier/HTML5i
void CScriptEnvTest::LoadExtension()
{
  HMODULE hDll = ::LoadLibrary(_T("HTML5i.dll"));

  ASSERT_TRUE(NULL != hDll);

  DllGetClassObjectFunc fnDllGetClassObject = (DllGetClassObjectFunc) ::GetProcAddress(hDll, "DllGetClassObject");

  CComPtr<ITypeLib> spTypeLib;

  ASSERT_HRESULT_SUCCEEDED(::LoadTypeLib(_T("HTML5i.dll"), &spTypeLib));  

  ASSERT_TRUE(NULL != fnDllGetClassObject);

  LoadClass(fnDllGetClassObject, _T("Context2D"), CLSID_Context2D);
  LoadClass(fnDllGetClassObject, _T("ContextWebGL"), CLSID_ContextWebGL);
}
コード例 #8
0
TEST(FileFs, All)
{
	ULONG flags;
	BOOL isOpened;
	WCHAR szNewFile[MAX_PATH];
	wcscpy_s(szNewFile, MAX_PATH, szTestcase);
	wcscat_s(szNewFile, MAX_PATH, L".new");
	CopyFileW(szTestcase, szNewFile, FALSE);
	IVirtualFs * fs = new CFileFs();
	ULONG creationFlags = IVirtualFs::fsRead | IVirtualFs::fsSharedRead | IVirtualFs::fsSharedWrite | IVirtualFs::fsOpenExisting | IVirtualFs::fsAttrNormal;
	
	ASSERT_HRESULT_SUCCEEDED(fs->Create(szNewFile, creationFlags));
	ASSERT_HRESULT_SUCCEEDED(fs->IsOpened(&isOpened));
	ASSERT_TRUE(isOpened);
	ASSERT_HRESULT_SUCCEEDED(fs->Close());

	ASSERT_HRESULT_SUCCEEDED(fs->Create(szNewFile, 0));
	ASSERT_HRESULT_SUCCEEDED(fs->IsOpened(&isOpened));
	ASSERT_FALSE(isOpened);
	ASSERT_HRESULT_SUCCEEDED(fs->ReCreate(NULL, creationFlags));
	ASSERT_HRESULT_SUCCEEDED(fs->IsOpened(&isOpened));
	ASSERT_TRUE(isOpened);
	ASSERT_HRESULT_SUCCEEDED(fs->GetFlags(&flags));
	ASSERT_EQ(creationFlags, flags);
	BSTR s;
	ASSERT_HRESULT_SUCCEEDED(fs->GetFullPath(&s));
	ASSERT_STREQ(szNewFile, s);
	SysFreeString(s);
	ASSERT_HRESULT_SUCCEEDED(fs->GetFileName(&s));
	ASSERT_STREQ(TEXT("testcase.bin.new"), s);
	SysFreeString(s);
	ASSERT_HRESULT_SUCCEEDED(fs->GetFileExt(&s));
	ASSERT_STREQ(TEXT("new"), s);
	SysFreeString(s);
	ULONG fsType;
	ASSERT_HRESULT_SUCCEEDED(fs->GetFsType(&fsType));
	ASSERT_EQ(IVirtualFs::basic, fsType);
	ASSERT_HRESULT_SUCCEEDED(fs->DeferredDelete());
	ASSERT_HRESULT_SUCCEEDED(fs->Close());
	fs->Release();
}
コード例 #9
0
ファイル: ScriptEnvTest.cpp プロジェクト: flier/HTML5i
TEST_F(CScriptEnvTest, Constructor)
{
  ASSERT_HRESULT_SUCCEEDED(ExecuteScript(_T("var canvas = new Context2D();")));

  ASSERT_HRESULT_SUCCEEDED(ExecuteScript(_T("var webgl = new ContextWebGL();")));    
}