diff --git a/athenasub/include/athenasub/athenasub.h b/athenasub/include/athenasub/athenasub.h index 72c9df62e..e16140703 100644 --- a/athenasub/include/athenasub/athenasub.h +++ b/athenasub/include/athenasub/athenasub.h @@ -43,5 +43,8 @@ #include "interfaces.h" #include "range.h" - extern "C" ATHENA_API Athenasub::ILibAthenaSub* CreateLibAthenasub(const char* hostName); + +#ifdef _WIN32 +#include "athenawin.h" +#endif diff --git a/athenasub/include/athenasub/exception.h b/athenasub/include/athenasub/exception.h index 09b5af8c8..cdddec7d5 100644 --- a/athenasub/include/athenasub/exception.h +++ b/athenasub/include/athenasub/exception.h @@ -66,8 +66,8 @@ namespace Athenasub { int GetCode() { return code; } private: - static const char* GetMessageChar(int code); - static const char* GetMessageFile(int code,const char *file,long line); + static std::string GetMessageChar(int code); + static std::string GetMessageFile(int code,const char *file,long line); ExceptionList code; }; diff --git a/athenasub/include/athenasub/interfaces.h b/athenasub/include/athenasub/interfaces.h index 0b36a953f..71126638c 100644 --- a/athenasub/include/athenasub/interfaces.h +++ b/athenasub/include/athenasub/interfaces.h @@ -64,6 +64,7 @@ namespace Athenasub { class ISection; class IDeltaCoder; class CController; + class CAction; // Smart pointers @@ -89,6 +90,7 @@ namespace Athenasub { typedef shared_ptr ConstDialogue; typedef shared_ptr ConstStyle; typedef shared_ptr ConstModel; + typedef shared_ptr ConstSection; // Lists @@ -101,7 +103,7 @@ namespace Athenasub { friend class CFormatHandler; friend class CActionList; friend class CController; - friend class IAction; + friend class CAction; protected: virtual void ProcessActionList(CActionList &actionList,int type=0) = 0; @@ -121,13 +123,16 @@ namespace Athenasub { virtual void Save(wxOutputStream &output,Format format=Format(),const String encoding="UTF-8") = 0; virtual void AddSection(String name) = 0; - virtual Section GetSection(String name) const = 0; - virtual Section GetSectionByIndex(size_t index) const = 0; - virtual size_t GetSectionCount() const = 0; + virtual Section GetSection(String name) = 0; + virtual Section GetSectionByIndex(size_t index) = 0; public: virtual ~IModel() {} + virtual ConstSection GetSection(String name) const = 0; + virtual ConstSection GetSectionByIndex(size_t index) const = 0; + virtual size_t GetSectionCount() const = 0; + virtual Controller CreateController()=0; virtual Format GetFormat() const=0; virtual void AddListener(View listener)=0; @@ -347,10 +352,10 @@ namespace Athenasub { class IAction { public: virtual ~IAction() {} - virtual Action GetAntiAction(const IModel& model) const = 0; - virtual void Execute(IModel& model) = 0; + virtual Action GetAntiAction() const = 0; + virtual void Execute() = 0; - Section GetSection(const IModel& model,const String &name) const { return model.GetSection(name); } + //virtual Section GetSection(const String &name) const = 0; }; diff --git a/athenasub/src/action.cpp b/athenasub/src/action.cpp index 582656b33..13ecd9aee 100644 --- a/athenasub/src/action.cpp +++ b/athenasub/src/action.cpp @@ -42,29 +42,28 @@ using namespace Athenasub; /////////////// // Constructor -ActionInsert::ActionInsert(Entry data,int line,const String &sName) -: entry(data), lineNumber(line), section(sName) {} +ActionInsert::ActionInsert(Model model,Entry data,int line,const String &sName) +: CAction(model), entry(data), lineNumber(line), section(sName) {} ///////////////////////////////// // Create anti-action for insert -Action ActionInsert::GetAntiAction(const IModel& model) const +Action ActionInsert::GetAntiAction() const { - (void) model; String sect = section; if (section.IsEmpty()) sect = entry->GetDefaultGroup(); - return Action(new ActionRemove(lineNumber,sect)); + return Action(new ActionRemove(GetModel(),lineNumber,sect)); } ///////////////////// // Execute insertion -void ActionInsert::Execute(IModel& model) +void ActionInsert::Execute() { // Find the section to insert it on String sectionName = section; if (sectionName.IsEmpty()) sectionName = entry->GetDefaultGroup(); - Section sect = GetSection(model,sectionName); + Section sect = GetSection(sectionName); // Insert the line sect->AddEntry(entry,lineNumber); @@ -77,28 +76,28 @@ void ActionInsert::Execute(IModel& model) /////////////// // Constructor -ActionRemove::ActionRemove(int line,const String &sName) -: lineNumber(line), section(sName) {} +ActionRemove::ActionRemove(Model model,int line,const String &sName) +: CAction(model), lineNumber(line), section(sName) {} ///////////////////////////////// // Create anti-action for remove -Action ActionRemove::GetAntiAction(const IModel& model) const +Action ActionRemove::GetAntiAction() const { - Section sect = GetSection(model,section); + Section sect = GetSection(section); Entry entry = sect->GetEntry(lineNumber); - return Action(new ActionInsert(entry,lineNumber,section)); + return Action(new ActionInsert(GetModel(),entry,lineNumber,section)); } /////////////////// // Execute removal -void ActionRemove::Execute(IModel& model) +void ActionRemove::Execute() { // Find the section to remote it from String sect = section; if (sect.IsEmpty()) THROW_ATHENA_EXCEPTION(Exception::TODO); // TODO - Section section = GetSection(model,sect); + Section section = GetSection(sect); // Remove the line section->RemoveEntryByIndex(lineNumber); @@ -109,19 +108,19 @@ void ActionRemove::Execute(IModel& model) //////////////// // Constructors -ActionModify::ActionModify(Entry data,int line,const String &sName,bool _noTextFields) -: entry(data), lineNumber(line), section(sName), noTextFields(_noTextFields) {} +ActionModify::ActionModify(Model model,Entry data,int line,const String &sName,bool _noTextFields) +: CAction(model), entry(data), lineNumber(line), section(sName), noTextFields(_noTextFields) {} -ActionModify::ActionModify(shared_ptr _delta,int line,const String &sName) -: delta(_delta), lineNumber(line), section(sName), noTextFields(false) {} +ActionModify::ActionModify(Model model,shared_ptr _delta,int line,const String &sName) +: CAction(model), delta(_delta), lineNumber(line), section(sName), noTextFields(false) {} ///////////////////////////////// // Create anti-action for insert -Action ActionModify::GetAntiAction(const IModel& model) const +Action ActionModify::GetAntiAction() const { // Get section and original line - Section sect = GetSection(model,section); + Section sect = GetSection(section); Entry oldEntry = sect->GetEntry(lineNumber); // Try to get a delta @@ -130,24 +129,24 @@ Action ActionModify::GetAntiAction(const IModel& model) const VoidPtr _delta; if (entry) _delta = deltaCoder->EncodeDelta(entry,oldEntry,!noTextFields); else _delta = deltaCoder->EncodeReverseDelta(delta,oldEntry); - return Action(new ActionModify(_delta,lineNumber,section)); + return Action(new ActionModify(GetModel(),_delta,lineNumber,section)); } // Store the whole original line else { - return Action(new ActionModify(oldEntry,lineNumber,section,noTextFields)); + return Action(new ActionModify(GetModel(),oldEntry,lineNumber,section,noTextFields)); } } ///////////////////// // Execute insertion -void ActionModify::Execute(IModel& model) +void ActionModify::Execute() { // Find the section to modify String sectionName = section; if (sectionName.IsEmpty()) sectionName = entry->GetDefaultGroup(); - Section sect = GetSection(model,sectionName); + Section sect = GetSection(sectionName); // Modify the line if (delta) { @@ -160,18 +159,18 @@ void ActionModify::Execute(IModel& model) ////////////////////////// Batch Modify line ////////////////////////// -ActionModifyBatch::ActionModifyBatch(std::vector _entries, std::vector > _deltas, Selection _selection,const String &_section,bool _noTextFields) -: entries(_entries), deltas(_deltas), selection(_selection), section(_section), noTextFields(_noTextFields) {} +ActionModifyBatch::ActionModifyBatch(Model model,std::vector _entries, std::vector > _deltas, Selection _selection,const String &_section,bool _noTextFields) +: CAction(model), entries(_entries), deltas(_deltas), selection(_selection), section(_section), noTextFields(_noTextFields) {} -ActionModifyBatch::ActionModifyBatch(Selection _selection,const String &_section,bool _noTextFields) -: selection(_selection), section(_section), noTextFields(_noTextFields) {} +ActionModifyBatch::ActionModifyBatch(Model model,Selection _selection,const String &_section,bool _noTextFields) +: CAction(model), selection(_selection), section(_section), noTextFields(_noTextFields) {} -Action ActionModifyBatch::GetAntiAction(const IModel& model) const +Action ActionModifyBatch::GetAntiAction() const { // Old, slow method if (false) { // Get section - Section sect = GetSection(model,section); + Section sect = GetSection(section); size_t len = selection->GetCount(); std::vector _deltas(len); std::vector oldEntries(len); @@ -192,18 +191,18 @@ Action ActionModifyBatch::GetAntiAction(const IModel& model) const else oldEntries[i] = oldEntry; } - return Action(new ActionModifyBatch(oldEntries,_deltas,selection,section,noTextFields)); + return Action(new ActionModifyBatch(GetModel(),oldEntries,_deltas,selection,section,noTextFields)); } else { // Get section - Section sect = GetSection(model,section); + Section sect = GetSection(section); size_t len = selection->GetCount(); // OK, this block warrants some explanation: // Copying smart pointers around all the time is quite slow, so I just create them once and // access the final copies. - ActionModifyBatch* antiPtr = new ActionModifyBatch(selection,section,noTextFields); + ActionModifyBatch* antiPtr = new ActionModifyBatch(GetModel(),selection,section,noTextFields); Action anti = Action(antiPtr); std::vector& _deltas = antiPtr->deltas; std::vector& oldEntries = antiPtr->entries; @@ -230,13 +229,13 @@ Action ActionModifyBatch::GetAntiAction(const IModel& model) const } } -void ActionModifyBatch::Execute(IModel& model) +void ActionModifyBatch::Execute() { // Find the section to modify size_t len = selection->GetCount(); String sectionName = section; if (sectionName.IsEmpty()) sectionName = entries[0]->GetDefaultGroup(); - Section sect = GetSection(model,sectionName); + Section sect = GetSection(sectionName); // For each line... for (size_t i=0;iGetSection(name); } + }; + // Insert line - class ActionInsert : public IAction { + class ActionInsert : public CAction { private: Entry entry; const String section; int lineNumber; public: - ActionInsert(Entry entry,int line,const String §ion); + ActionInsert(Model model,Entry entry,int line,const String §ion); - Action GetAntiAction(const IModel& model) const; - void Execute(IModel& model); + Action GetAntiAction() const; + void Execute(); }; // Remove line - class ActionRemove : public IAction { + class ActionRemove : public CAction { private: const String section; int lineNumber; public: - ActionRemove(int line,const String §ion); + ActionRemove(Model model,int line,const String §ion); - Action GetAntiAction(const IModel& model) const; - void Execute(IModel& model); + Action GetAntiAction() const; + void Execute(); }; // Modify line - class ActionModify : public IAction { + class ActionModify : public CAction { private: Entry entry; VoidPtr delta; @@ -77,15 +89,15 @@ namespace Athenasub { bool noTextFields; public: - ActionModify(Entry entry,int line,const String §ion,bool noTextFields); - ActionModify(shared_ptr delta,int line,const String §ion); + ActionModify(Model model,Entry entry,int line,const String §ion,bool noTextFields); + ActionModify(Model model,shared_ptr delta,int line,const String §ion); - Action GetAntiAction(const IModel& model) const; - void Execute(IModel& model); + Action GetAntiAction() const; + void Execute(); }; // Modify several lines - class ActionModifyBatch : public IAction { + class ActionModifyBatch : public CAction { private: std::vector entries; std::vector deltas; @@ -93,12 +105,12 @@ namespace Athenasub { const String section; bool noTextFields; - ActionModifyBatch(Selection selection,const String §ion,bool noTextFields); + ActionModifyBatch(Model model,Selection selection,const String §ion,bool noTextFields); public: - ActionModifyBatch(std::vector entries,std::vector deltas,Selection selection,const String §ion,bool noTextFields); + ActionModifyBatch(Model model,std::vector entries,std::vector deltas,Selection selection,const String §ion,bool noTextFields); - Action GetAntiAction(const IModel& model) const; - void Execute(IModel& model); + Action GetAntiAction() const; + void Execute(); }; } diff --git a/athenasub/src/actionlist.cpp b/athenasub/src/actionlist.cpp index f1c1db982..d7fccb9cd 100644 --- a/athenasub/src/actionlist.cpp +++ b/athenasub/src/actionlist.cpp @@ -107,7 +107,7 @@ void CActionList::Finish() // Create an "insert line" action void CActionList::InsertLine(Entry line,int position,const String section) { - Action action = Action (new ActionInsert(line,position,section)); + Action action = Action (new ActionInsert(model.lock(),line,position,section)); AddAction(action); } @@ -116,7 +116,7 @@ void CActionList::InsertLine(Entry line,int position,const String section) // Create a "remove line" action void CActionList::RemoveLine(int position,const String section) { - Action action = Action (new ActionRemove(position,section)); + Action action = Action (new ActionRemove(model.lock(),position,section)); AddAction(action); } @@ -127,7 +127,7 @@ Entry CActionList::ModifyLine(int position,const String section) { Section sect = Model(model)->GetSection(section); Entry entry = sect->GetEntry(position)->Clone(); - Action action = Action (new ActionModify(entry,position,section,false)); + Action action = Action (new ActionModify(model.lock(),entry,position,section,false)); AddAction(action); return entry; } @@ -152,6 +152,6 @@ std::vector CActionList::ModifyLines(Selection selection,const String sec } // Generate the action - AddAction(Action(new ActionModifyBatch(entries,std::vector(),selection,section,false))); + AddAction(Action(new ActionModifyBatch(model.lock(),entries,std::vector(),selection,section,false))); return entries; } diff --git a/athenasub/src/athenatime.cpp b/athenasub/src/athenatime.cpp index 52b8f5732..7d62612f2 100644 --- a/athenasub/src/athenatime.cpp +++ b/athenasub/src/athenatime.cpp @@ -178,7 +178,9 @@ void Time::ParseString(const String &data) // Got a digit else if (cur != ' ') { - if (cur < '0' || cur > '9') THROW_ATHENA_EXCEPTION(Exception::Parse_Error); + if (cur < '0' || cur > '9') { + THROW_ATHENA_EXCEPTION(Exception::Parse_Error); + } curValue = curValue * 10 + (int)(cur-'0'); nDigits++; diff --git a/athenasub/src/exception.cpp b/athenasub/src/exception.cpp index 49c43dc65..f23c54c12 100644 --- a/athenasub/src/exception.cpp +++ b/athenasub/src/exception.cpp @@ -40,13 +40,13 @@ using namespace Athenasub; //////////////// // Constructors Exception::Exception(ExceptionList _code) -: std::exception(GetMessageChar(_code)) +: std::exception(GetMessageChar(_code).c_str()) { code = _code; } Exception::Exception(ExceptionList _code,const char* file,const long line) -: std::exception(GetMessageFile(_code,file,line)) +: std::exception(GetMessageFile(_code,file,line).c_str()) { code = _code; } @@ -54,21 +54,21 @@ Exception::Exception(ExceptionList _code,const char* file,const long line) ////////////////////// // Get message string -const char* Exception::GetMessageChar(int code) +std::string Exception::GetMessageChar(int code) { switch (code) { - case Unknown: return "Unknown."; - case No_Format_Handler: return "Could not find a suitable format handler."; - case Invalid_ActionList: return "Invalid manipulator."; - case Section_Already_Exists: return "The specified section already exists in this model."; - case Unknown_Format: return "The specified file format is unknown."; - case Parse_Error: return "Parse error."; - case Unsupported_Format_Feature: return "This feature is not supported by this format."; - case Invalid_Token: return "Invalid type for this token."; - case Out_Of_Range: return "Out of range."; - case Invalid_Section: return "Invalid section."; - case Internal_Error: return "Internal error."; - case TODO: return "TODO"; + case Unknown: return "Unknown."; + case No_Format_Handler: return "Could not find a suitable format handler."; + case Invalid_ActionList: return "Invalid manipulator."; + case Section_Already_Exists: return "The specified section already exists in this model."; + case Unknown_Format: return "The specified file format is unknown."; + case Parse_Error: return "Parse error."; + case Unsupported_Format_Feature: return "This feature is not supported by this format."; + case Invalid_Token: return "Invalid type for this token."; + case Out_Of_Range: return "Out of range."; + case Invalid_Section: return "Invalid section."; + case Internal_Error: return "Internal error."; + case TODO: return "TODO"; } return "Invalid code."; } @@ -76,12 +76,12 @@ const char* Exception::GetMessageChar(int code) /////////////////////////////////////////// // Get the message string for the filename -const char* Exception::GetMessageFile(int code,const char *file,long line) +std::string Exception::GetMessageFile(int code,const char *file,long line) { - static std::string str = GetMessageChar(code); + std::string str = GetMessageChar(code); str = str + " (" + file + ":"; char buffer[16]; _itoa_s(line,buffer,10); str = str + buffer + ")"; - return str.c_str(); + return str; } diff --git a/athenasub/src/formats/format_ass.cpp b/athenasub/src/formats/format_ass.cpp index b499c9beb..452489dbd 100644 --- a/athenasub/src/formats/format_ass.cpp +++ b/athenasub/src/formats/format_ass.cpp @@ -165,7 +165,10 @@ void FormatHandlerASS::Save(wxOutputStream &file,const String encoding) size_t totalSections = GetSectionCount(); for (size_t i=0;iGetName(); - if (find(sections.begin(),sections.end(),name) != sections.end()) sections.push_back(name); + // If not found on the list, add to it + if (find(sections.begin(),sections.end(),name) == sections.end()) { + sections.push_back(name); + } } // Write sections diff --git a/athenasub/src/model.cpp b/athenasub/src/model.cpp index 9bba63efb..77f73ca31 100644 --- a/athenasub/src/model.cpp +++ b/athenasub/src/model.cpp @@ -87,10 +87,10 @@ void CModel::ProcessActionList(CActionList &_actionList,int type) std::list::const_iterator cur; for (cur=actions->actions.begin();cur!=actions->actions.end();cur++) { // Inserts the opposite into the undo action first - if (actions->undoAble) undo->AddActionStart((*cur)->GetAntiAction(*this)); + if (actions->undoAble) undo->AddActionStart((*cur)->GetAntiAction()); // Execute the action itself - (*cur)->Execute(*this); + (*cur)->Execute(); } // Insert into undo stack @@ -163,7 +163,16 @@ void CModel::AddSection(String name) ////////////////// // Gets a section -Section CModel::GetSection(String name) const +ConstSection CModel::GetSection(String name) const +{ + size_t len = sections.size(); + for (size_t i=0;iGetName() == name) return sections[i]; + } + return SectionPtr(); +} + +Section CModel::GetSection(String name) { size_t len = sections.size(); for (size_t i=0;i -#include +#include #include #include #include "text_file_reader.h" diff --git a/athenasub/test/test_2008.vcproj b/athenasub/test/test_2008.vcproj index 9360f819e..690b9e04f 100644 --- a/athenasub/test/test_2008.vcproj +++ b/athenasub/test/test_2008.vcproj @@ -192,18 +192,6 @@ > - - - - diff --git a/unit_test/src/athenasub/test_file.cpp b/unit_test/src/athenasub/test_file.cpp new file mode 100644 index 000000000..6369c11c1 --- /dev/null +++ b/unit_test/src/athenasub/test_file.cpp @@ -0,0 +1,102 @@ +// Copyright (c) 2008, Rodrigo Braz Monteiro +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Aegisub Group nor the names of its contributors +// may be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// ----------------------------------------------------------------------------- +// +// AEGISUB +// +// Website: http://aegisub.cellosoft.com +// Contact: mailto:zeratul@cellosoft.com +// + +#include "../suites.h" +#include "../utils.h" +#if ATHENASUB_TEST == 1 + +#include +#include +#include +#include "../../../athenasub/include/athenasub/athenasub.h" +using namespace Athenasub; + + +class AthenasubFileTest : public CppUnit::TestFixture { + CPPUNIT_TEST_SUITE(AthenasubFileTest); + CPPUNIT_TEST(testLoad); + CPPUNIT_TEST(testSave); + CPPUNIT_TEST(testStableRewrite); + CPPUNIT_TEST_SUITE_END(); + +private: + LibAthenaSub lib; + String fileFolder; + +public: + void setUp() + { + fileFolder = "test_files/"; + lib = Athenasub::Create("AthenasubTest"); + } + + void tearDown() + { + } + + void testLoad() + { + Model subs = lib->CreateModel(); + Controller controller = subs->CreateController(); + CPPUNIT_ASSERT_NO_THROW(controller->LoadFile(fileFolder+"in_test1.ass","UTF-8")); + ConstModel csubs = subs; + CPPUNIT_ASSERT(csubs->GetSectionCount() == 3); + ConstSection section; + CPPUNIT_ASSERT_NO_THROW(section = csubs->GetSection("Script Info")); + CPPUNIT_ASSERT(section->HasProperty("ScriptType")); + CPPUNIT_ASSERT(section->GetProperty("ScriptType") == "v4.00+"); + } + + void testSave() + { + Model subs = lib->CreateModel(); + Controller controller = subs->CreateController(); + controller->LoadFile(fileFolder+"in_test1.ass","UTF-8"); + CPPUNIT_ASSERT_NO_THROW(controller->SaveFile(fileFolder+"out_test1.ass","UTF-8")); + } + + void testStableRewrite() + { + Model subs = lib->CreateModel(); + Controller controller = subs->CreateController(); + controller->LoadFile(fileFolder+"out_test1.ass","UTF-8"); + CPPUNIT_ASSERT_NO_THROW(controller->SaveFile(fileFolder+"out_test2.ass","UTF-8")); + CPPUNIT_ASSERT(AreFilesIdentical(fileFolder+"out_test1.ass",fileFolder+"out_test2.ass")); + } +}; + +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(AthenasubFileTest,AegisubSuites::athenasub()); + +#endif diff --git a/unit_test/src/athenasub/test_string.cpp b/unit_test/src/athenasub/test_string.cpp index c5a461788..9f9a3eb57 100644 --- a/unit_test/src/athenasub/test_string.cpp +++ b/unit_test/src/athenasub/test_string.cpp @@ -46,6 +46,7 @@ using namespace Athenasub; class AthenasubStringTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(AthenasubStringTest); CPPUNIT_TEST(testComparison); + CPPUNIT_TEST(testStartEnd); CPPUNIT_TEST(testConcatenation); CPPUNIT_TEST(testConversion); CPPUNIT_TEST_SUITE_END(); @@ -83,6 +84,18 @@ public: CPPUNIT_ASSERT((c < d) == false); } + void testStartEnd() + { + String a = "Hello world!"; + + CPPUNIT_ASSERT(a.StartsWith("Hello")); + CPPUNIT_ASSERT(a.StartsWith("hello") == false); + CPPUNIT_ASSERT(a.StartsWith("hello",false)); + CPPUNIT_ASSERT(a.EndsWith("world!")); + CPPUNIT_ASSERT(a.EndsWith("World!") == false); + CPPUNIT_ASSERT(a.EndsWith("world!",false)); + } + void testConcatenation() { String a; diff --git a/unit_test/src/utils.cpp b/unit_test/src/utils.cpp new file mode 100644 index 000000000..253bce69c --- /dev/null +++ b/unit_test/src/utils.cpp @@ -0,0 +1,46 @@ +// Copyright (c) 2008, Rodrigo Braz Monteiro +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Aegisub Group nor the names of its contributors +// may be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// ----------------------------------------------------------------------------- +// +// AEGISUB +// +// Website: http://aegisub.cellosoft.com +// Contact: mailto:zeratul@cellosoft.com +// + +#include "utils.h" + + +bool AreFilesIdentical(std::string file1, std::string file2) +{ + return GetFileMD5(file1) == GetFileMD5(file2); +} + +std::string GetFileMD5(std::string file) { + return ""; +} diff --git a/unit_test/src/utils.h b/unit_test/src/utils.h new file mode 100644 index 000000000..afec27d77 --- /dev/null +++ b/unit_test/src/utils.h @@ -0,0 +1,39 @@ +// Copyright (c) 2008, Rodrigo Braz Monteiro +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Aegisub Group nor the names of its contributors +// may be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// ----------------------------------------------------------------------------- +// +// AEGISUB +// +// Website: http://aegisub.cellosoft.com +// Contact: mailto:zeratul@cellosoft.com +// + +#include + +bool AreFilesIdentical(std::string file1, std::string file2); +std::string GetFileMD5(std::string file); diff --git a/unit_test/test_files/in_test1.ass b/unit_test/test_files/in_test1.ass new file mode 100644 index 000000000..d831ede7a --- /dev/null +++ b/unit_test/test_files/in_test1.ass @@ -0,0 +1,389 @@ +[Script Info] +; Script generated by Aegisub v2.00 PRE-RELEASE (SVN r886, ArchMageZeratuL) +; http://www.aegisub.net +Title: +Original Script: +ScriptType: v4.00+ +Video Aspect Ratio: 0 +Video Zoom: 8 +Video Position: 11067 +Last Style Storage: evangelion +PlayResX: 704 +PlayResY: 480 +Video File: ..\Shin.Seiki.Evangelion.[KAA].DVD.(h.264-AC3).[05B4E07C]_RC1.mkv +Audio File: ..\Shin.Seiki.Evangelion.[KAA].DVD.(h.264-AC3).[05B4E07C]_RC1_Track2.ac3 + +[V4+ Styles] +Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding +Style: eva main,Sui Generis,27,&H00F1E4D3,&H0000FFFF,&H008E4830,&H00000000,0,0,0,0,100,100,0,0,1,2,1,2,18,18,17,0 +Style: eva alternate,Sui Generis,27,&H00C4A377,&H0000FFFF,&H008E4830,&H00000000,0,0,0,0,100,100,0,0,1,2,1,2,18,18,17,0 +Style: eva bg broadcast,Sui Generis,24,&H00C1C1C1,&H0000FFFF,&H008E3230,&H00000000,0,0,0,0,100,100,0,0,1,2,1,8,18,18,17,0 +Style: eva broadcast,Sui Generis,27,&H00C1C1C1,&H0000FFFF,&H008E3230,&H00000000,0,0,0,0,100,100,0,0,1,2,1,2,18,18,17,0 +Style: eva notes,Tw Cen MT,28,&H00FFFFFF,&H0000FFFF,&H00D2D2D2,&H00000000,0,0,0,0,100,100,0,0,1,0,0,9,18,18,17,0 +Style: eva other fo,Lucida Sans,20,&H00FFFFFF,&H0000FFFF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,0,0,2,10,10,10,0 +Style: eva titles,Angsana New,80,&H00FFFFFF,&H0000FFFF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,0,0,2,10,10,10,0 + +[Events] +Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text +Dialogue: 0,0:01:30.40,0:01:32.73,eva titles,Comment,0000,0000,0000,,{\fsp-3\pos(352,345)}The year is 2015 A.D. +Dialogue: 0,0:01:55.10,0:01:59.03,eva broadcast,Comment,0000,0000,0000,,As of 12:30 PM today, a special state\nof emergency has been declared +Dialogue: 0,0:01:59.13,0:02:03.26,eva broadcast,Comment,0000,0000,0000,,for the Kanto and Chubu regions\nsurrounding the Tokai district. +Dialogue: 0,0:02:03.77,0:02:07.80,eva broadcast,Comment,0000,0000,0000,,All residents must evacuate to their\ndesignated shelters immediately. +Dialogue: 0,0:02:08.24,0:02:12.55,eva broadcast,Comment,0000,0000,0000,,Repeating: As of 12:30 PM today, +Dialogue: 0,0:02:11.65,0:02:14.07,eva other fo,Comment,0000,0000,0000,,{\pos(488,124)\bord0\shad0\fs30\frz322.539\frx24\fry41}All Lines Stopped +Dialogue: 0,0:02:12.55,0:02:16.17,eva broadcast,Comment,0000,0000,0000,,the Kanto and Chubu regions\nsurrounding the Tokai district +Dialogue: 0,0:02:16.25,0:02:19.31,eva broadcast,Comment,0000,0000,0000,,have been declared to be under\na state of emergency. +Dialogue: 0,0:02:19.39,0:02:20.92,eva broadcast,Comment,0000,0000,0000,,All residents must evacuate... +Dialogue: 0,0:02:20.92,0:02:24.39,eva main,Comment,0000,0000,0000,,Why did I have to lose sight of him now? +Dialogue: 0,0:02:24.39,0:02:26.23,eva main,Comment,0000,0000,0000,,Oh, man! +Dialogue: 0,0:02:26.11,0:02:28.75,eva other fo,Comment,0000,0000,0000,,{\c&H071413&\bord0\shad0\pos(154,432)\frz-5\fs22}Ikari Shinji +Dialogue: 0,0:02:27.26,0:02:29.96,eva main,Comment,0000,0000,0000,,Due to the special emergency, +Dialogue: 0,0:02:30.03,0:02:33.30,eva main,Comment,0000,0000,0000,,all lines are currently unavailable. +Dialogue: 0,0:02:34.74,0:02:35.73,eva main,Comment,0000,0000,0000,,It's no use. +Dialogue: 0,0:02:36.77,0:02:39.07,eva main,Comment,0000,0000,0000,,I shouldn't have come here after all. +Dialogue: 0,0:02:42.84,0:02:45.26,eva main,Comment,0000,0000,0000,,{\fnhomework normal\fs40\shad0\bord1\3a&H80&\c&H21150C&\frz10\3c&HFFFFFF&\4c&HFFFFFF&\pos(160,179)}To Shinji-kun +Dialogue: 0,0:02:42.84,0:02:45.26,eva main,Comment,0000,0000,0000,,{\fnhomework normal\fs40\shad0\bord1\3a&H80&\c&H21150C&\frz10\3c&HFFFFFF&\4c&HFFFFFF&\pos(592,123)}I'll be coming to\N\Nget you, so wait +Dialogue: 0,0:02:42.84,0:02:45.26,eva main,Comment,0000,0000,0000,,{\fnhomework normal\fs40\shad0\bord1\3a&H80&\c&H21150C&\frz10\3c&HFFFFFF&\4c&HFFFFFF&\pos(211,250)}Attention here!! +Dialogue: 0,0:02:42.84,0:02:45.26,eva main,Comment,0000,0000,0000,,{\fnhomework normal\fs40\shad0\bord1\3a&H80&\c&H21150C&\frz10\3c&HFFFFFF&\4c&HFFFFFF&\pos(628,197)}for me.{\fnWebdings}♥ +Dialogue: 0,0:02:43.38,0:02:45.74,eva main,Comment,0000,0000,0000,,Well, I guess we won't be meeting here. +Dialogue: 0,0:02:46.88,0:02:49.48,eva main,Comment,0000,0000,0000,,Can't be helped. I'll go to a shelter. +Dialogue: 0,0:03:14.63,0:03:18.55,eva titles,Comment,0000,0000,0000,,{\fs21\fsp-1\bord0\shad0\c&HE3EDFC&\fnTw Cen MT\pos(612,415)}ESTIMATED PATH +Dialogue: 0,0:03:15.14,0:03:18.60,eva main,Comment,0000,0000,0000,,The unidentified mobile object is still\nadvancing on our position. +Dialogue: 0,0:03:19.38,0:03:22.61,eva main,Comment,0000,0000,0000,,We've got visual confirmation.\NI'm putting it on the main screen. +Dialogue: 0,0:03:24.29,0:03:26.12,eva main,Comment,0000,0000,0000,,It's been fifteen years, hasn't it? +Dialogue: 0,0:03:26.19,0:03:28.31,eva main,Comment,0000,0000,0000,,Yes, there's no doubt. +Dialogue: 0,0:03:29.29,0:03:30.52,eva main,Comment,0000,0000,0000,,It's an Angel. +Dialogue: 0,0:03:30.52,0:03:33.19,eva titles,Comment,0000,0000,0000,,{\pos(476,263)\fs130\fsp-6}Angel Attack +Dialogue: 0,0:03:30.52,0:03:33.19,eva titles,Comment,0000,0000,0000,,{\fsp-3\pos(193,61)}Episode One +Dialogue: 0,0:03:42.50,0:03:44.34,eva broadcast,Comment,0000,0000,0000,,Every missile hit the target! +Dialogue: 0,0:04:03.53,0:04:05.12,eva main,Comment,0000,0000,0000,,I'm sorry! Thanks for waiting! +Dialogue: 0,0:04:22.11,0:04:26.71,eva broadcast,Comment,0000,0000,0000,,The target is still operational.\NIt's still heading towards New Tokyo-3. +Dialogue: 0,0:04:26.78,0:04:29.31,eva broadcast,Comment,0000,0000,0000,,The Air Defense Force doesn't have\nthe firepower to stop it! +Dialogue: 0,0:04:30.12,0:04:31.29,eva main,Comment,0000,0000,0000,,Hit it with everything we've got! +Dialogue: 0,0:04:31.29,0:04:33.25,eva main,Comment,0000,0000,0000,,Mobilize all of Atsugi and Iruma as well! +Dialogue: 0,0:04:33.32,0:04:36.72,eva main,Comment,0000,0000,0000,,Don't hold anything back!\NDestroy the target at any cost! +Dialogue: 0,0:04:50.05,0:04:52.17,eva main,Comment,0000,0000,0000,,Why?! That was a direct hit! +Dialogue: 0,0:04:52.64,0:04:55.04,eva main,Comment,0000,0000,0000,,The tank battalion's been annihilated. +Dialogue: 0,0:04:55.04,0:04:57.98,eva main,Comment,0000,0000,0000,,Guided missiles and artillery\nhave no effect either. +Dialogue: 0,0:04:57.98,0:05:01.52,eva main,Comment,0000,0000,0000,,It's no good! We'll never get anywhere\nwith the firepower we've got! +Dialogue: 0,0:05:01.52,0:05:03.39,eva main,Comment,0000,0000,0000,,Is it an AT field after all? +Dialogue: 0,0:05:01.52,0:05:04.52,eva notes,Comment,0000,0000,0000,,{\fad(400,400)\1a&H70&}AT field: absolute terror field +Dialogue: 0,0:05:03.39,0:05:07.34,eva main,Comment,0000,0000,0000,,Yes. Conventional weapons are\nuseless against Angels. +Dialogue: 0,0:05:10.76,0:05:13.99,eva main,Comment,0000,0000,0000,,I understand. We'll activate it as planned. +Dialogue: 0,0:05:18.80,0:05:20.29,eva main,Comment,0000,0000,0000,,Hey, don't tell me... +Dialogue: 0,0:05:20.37,0:05:22.23,eva main,Comment,0000,0000,0000,,They're going to use an N{\fnLucida Sans}²{\r} mine?! +Dialogue: 0,0:05:22.74,0:05:23.76,eva main,Comment,0000,0000,0000,,Get down! +Dialogue: 0,0:05:46.56,0:05:47.43,eva main,Comment,0000,0000,0000,,We did it! +Dialogue: 0,0:05:48.80,0:05:51.89,eva main,Comment,0000,0000,0000,,Sorry, but it looks like you won't be\ngetting a shot at it. +Dialogue: 0,0:05:51.97,0:05:54.16,eva broadcast,Comment,0000,0000,0000,,Shock wave approaching. +Dialogue: 0,0:05:55.37,0:05:56.70,eva main,Comment,0000,0000,0000,,Are you all right? +Dialogue: 0,0:05:56.77,0:06:00.11,eva main,Comment,0000,0000,0000,,Yeah, but my mouth is full of dirt. +Dialogue: 0,0:06:00.11,0:06:04.07,eva main,Comment,0000,0000,0000,,That's okay. Now then, here we go! +Dialogue: 0,0:06:04.75,0:06:06.08,eva main,Comment,0000,0000,0000,,One, two! +Dialogue: 0,0:06:09.88,0:06:11.44,eva main,Comment,0000,0000,0000,,There. +Dialogue: 0,0:06:14.79,0:06:16.88,eva main,Comment,0000,0000,0000,,Thanks for the hand. I really appreciate it. +Dialogue: 0,0:06:16.96,0:06:19.95,eva main,Comment,0000,0000,0000,,Thank you too, Katsuragi-san. +Dialogue: 0,0:06:20.03,0:06:22.09,eva main,Comment,0000,0000,0000,,Just Misato is fine. +Dialogue: 0,0:06:22.56,0:06:25.90,eva main,Comment,0000,0000,0000,,I'm glad we've met at last, Ikari Shinji-kun. +Dialogue: 0,0:06:26.20,0:06:27.02,eva main,Comment,0000,0000,0000,,Yeah... +Dialogue: 0,0:06:27.57,0:06:28.83,eva broadcast,Comment,0000,0000,0000,,What's the target's status? +Dialogue: 0,0:06:28.90,0:06:31.80,eva broadcast,Comment,0000,0000,0000,,We're unable to confirm due to\nall the EMP interference. +Dialogue: 0,0:06:31.87,0:06:34.64,eva main,Comment,0000,0000,0000,,You saw the size of the explosion. It's over. +Dialogue: 0,0:06:34.71,0:06:36.14,eva broadcast,Comment,0000,0000,0000,,Sensors restored. +Dialogue: 0,0:06:37.45,0:06:39.28,eva broadcast,Comment,0000,0000,0000,,We've got an energy reading\nat the explosion's epicenter! +Dialogue: 0,0:06:39.35,0:06:40.47,eva main,Comment,0000,0000,0000,,What the hell?! +Dialogue: 0,0:06:40.55,0:06:42.18,eva broadcast,Comment,0000,0000,0000,,Visual display restored. +Dialogue: 0,0:06:46.45,0:06:48.68,eva main,Comment,0000,0000,0000,,That was our last resort. +Dialogue: 0,0:06:49.62,0:06:51.53,eva main,Comment,0000,0000,0000,,How can this be? +Dialogue: 0,0:06:51.53,0:06:53.15,eva main,Comment,0000,0000,0000,,Damned monster! +Dialogue: 0,0:07:03.10,0:07:05.50,eva main,Comment,0000,0000,0000,,Yes. Don't worry about it. +Dialogue: 0,0:07:05.57,0:07:09.63,eva main,Comment,0000,0000,0000,,His safety is my top priority,\nso could you get a car train ready for us? +Dialogue: 0,0:07:09.71,0:07:10.94,eva main,Comment,0000,0000,0000,,A direct one. +Dialogue: 0,0:07:11.81,0:07:12.78,eva main,Comment,0000,0000,0000,,Right. +Dialogue: 0,0:07:13.15,0:07:15.48,eva main,Comment,0000,0000,0000,,Well, I volunteered to pick him up, +Dialogue: 0,0:07:15.48,0:07:18.18,eva main,Comment,0000,0000,0000,,so I'll make sure he gets there. See ya! +Dialogue: 0,0:07:20.52,0:07:26.95,eva main,Comment,0000,0000,0000,,Man, this sucks! I just had my car restored\nand it's a total wreck already! +Dialogue: 0,0:07:27.44,0:07:30.56,eva main,Comment,0000,0000,0000,,33 more loan payments to go,\nplus the cost of repairs. +Dialogue: 0,0:07:30.63,0:07:33.16,eva main,Comment,0000,0000,0000,,And look! My best dress has been ruined! +Dialogue: 0,0:07:33.54,0:07:37.30,eva main,Comment,0000,0000,0000,,And I was looking and feeling so nice. +Dialogue: 0,0:07:32.97,0:07:34.79,eva alternate,Comment,0000,0000,0000,,Excuse me, Misato-san? +Dialogue: 0,0:07:37.30,0:07:38.98,eva main,Comment,0000,0000,0000,,Excuse me, Misato-san? +Dialogue: 0,0:07:39.17,0:07:40.66,eva main,Comment,0000,0000,0000,,What? +Dialogue: 0,0:07:40.74,0:07:43.40,eva main,Comment,0000,0000,0000,,Are you sure you can just take those? +Dialogue: 0,0:07:45.25,0:07:46.21,eva main,Comment,0000,0000,0000,,Never mind about that! +Dialogue: 0,0:07:46.28,0:07:50.05,eva main,Comment,0000,0000,0000,,It's an emergency, and we need\na working car right now, right? +Dialogue: 0,0:07:50.12,0:07:53.61,eva main,Comment,0000,0000,0000,,And I'm an international government\nofficial, after all, +Dialogue: 0,0:07:53.69,0:07:55.28,eva main,Comment,0000,0000,0000,,so everything's going to be\nperfectly fine, okay? +Dialogue: 0,0:07:56.66,0:07:59.29,eva main,Comment,0000,0000,0000,,I don't think anyone will buy that. +Dialogue: 0,0:07:59.36,0:08:03.46,eva main,Comment,0000,0000,0000,,You're no fun. You look cute,\nbut you're kind of a cold fish. +Dialogue: 0,0:08:04.40,0:08:05.73,eva main,Comment,0000,0000,0000,,You think so? +Dialogue: 0,0:08:05.80,0:08:07.53,eva main,Comment,0000,0000,0000,,Oh, did I upset you? +Dialogue: 0,0:08:08.27,0:08:11.67,eva main,Comment,0000,0000,0000,,Sorry about that! You are a boy, after all. +Dialogue: 0,0:08:11.74,0:08:15.04,eva main,Comment,0000,0000,0000,,And you're pretty childish for your age. +Dialogue: 0,0:08:20.75,0:08:23.68,eva main,Comment,0000,0000,0000,,As we predicted, it's regenerating itself. +Dialogue: 0,0:08:23.99,0:08:27.85,eva main,Comment,0000,0000,0000,,If it couldn't, it wouldn't be\na practical autonomous weapon. +Dialogue: 0,0:08:31.49,0:08:35.09,eva main,Comment,0000,0000,0000,,Impressive. It appears it can even upgrade\nits own operational functions. +Dialogue: 0,0:08:35.43,0:08:37.69,eva main,Comment,0000,0000,0000,,And it seems to have gotten smarter. +Dialogue: 0,0:08:38.73,0:08:41.63,eva main,Comment,0000,0000,0000,,It's only a matter of time before\nit resumes attacking. +Dialogue: 0,0:08:43.04,0:08:46.61,eva bg broadcast,Comment,0000,0000,0000,,The gates are now closing.\NPlease stand clear. +Dialogue: 0,0:08:46.30,0:08:48.03,eva main,,0000,0000,0000,,The special duty organization Nerv? +Dialogue: 0,0:08:46.61,0:08:48.34,eva bg broadcast,Comment,0000,0000,0000,,Now departing. +Dialogue: 0,0:08:48.14,0:08:51.45,eva main,Comment,0000,0000,0000,,Yes, it's a secret organization under\nthe control of the United Nations. +Dialogue: 0,0:08:48.34,0:08:56.75,eva bg broadcast,Comment,0000,0000,0000,,This is the C-22 Special Express\ndeparting directly for G33-1. +Dialogue: 0,0:08:51.95,0:08:53.58,eva main,Comment,0000,0000,0000,,That's where my father is, right? +Dialogue: 0,0:08:53.58,0:08:54.75,eva main,Comment,0000,0000,0000,,Well, yeah. +Dialogue: 0,0:08:54.75,0:08:56.75,eva main,Comment,0000,0000,0000,,Do you know what he does? +Dialogue: 0,0:08:58.09,0:09:01.92,eva bg broadcast,Comment,0000,0000,0000,,This train will bypass all other stations.\NPlease stand back. +Dialogue: 0,0:09:00.69,0:09:04.52,eva main,Comment,0000,0000,0000,,My teacher told me his work is vital\nfor the protection of the human race. +Dialogue: 0,0:09:07.66,0:09:10.83,eva main,Comment,0000,0000,0000,,From this point forward, command of this\noperation will be entrusted to you. +Dialogue: 0,0:09:10.90,0:09:12.53,eva main,Comment,0000,0000,0000,,Show us what you're capable of. +Dialogue: 0,0:09:12.60,0:09:13.69,eva main,Comment,0000,0000,0000,,Yes, Sir. +Dialogue: 0,0:09:14.27,0:09:20.37,eva main,Comment,0000,0000,0000,,Ikari-kun, we will admit that our weapons\nhave no effect on the target. +Dialogue: 0,0:09:21.28,0:09:23.68,eva main,Comment,0000,0000,0000,,But are you sure you can beat this thing? +Dialogue: 0,0:09:24.15,0:09:25.83,eva main,Comment,0000,0000,0000,,It's what Nerv was created for. +Dialogue: 0,0:09:26.65,0:09:28.14,eva main,Comment,0000,0000,0000,,Let's hope you're correct. +Dialogue: 0,0:09:29.78,0:09:31.91,eva broadcast,Comment,0000,0000,0000,,The target is still stationary. +Dialogue: 0,0:09:31.99,0:09:35.35,eva broadcast,Comment,0000,0000,0000,,Our intercept system is currently\N7.5% operational. +Dialogue: 0,0:09:37.03,0:09:39.36,eva main,Comment,0000,0000,0000,,So, even the UN forces have retired. +Dialogue: 0,0:09:39.43,0:09:41.02,eva main,Comment,0000,0000,0000,,What are you going to do? +Dialogue: 0,0:09:41.53,0:09:43.52,eva main,Comment,0000,0000,0000,,I intend to activate Unit 01. +Dialogue: 0,0:09:43.77,0:09:46.86,eva main,Comment,0000,0000,0000,,Unit 01? But we have no pilot. +Dialogue: 0,0:09:47.50,0:09:51.10,eva main,Comment,0000,0000,0000,,That's not a problem. Another spare\nwill be delivered soon. +Dialogue: 0,0:09:52.07,0:09:54.80,eva main,Comment,0000,0000,0000,,Are you taking me to my father? +Dialogue: 0,0:09:55.31,0:09:57.40,eva main,Comment,0000,0000,0000,,Yes. Pretty much. +Dialogue: 0,0:10:01.25,0:10:02.51,eva main,Comment,0000,0000,0000,,Father... +Dialogue: 0,0:10:04.09,0:10:07.45,eva main,Comment,0000,0000,0000,,Oh, that's right. Did you get\nan ID card from your father? +Dialogue: 0,0:10:09.36,0:10:10.35,eva main,Comment,0000,0000,0000,,Yes. +Dialogue: 0,0:10:12.03,0:10:13.05,eva main,Comment,0000,0000,0000,,Here it is. +Dialogue: 0,0:10:13.13,0:10:14.43,eva main,Comment,0000,0000,0000,,Thanks. +Dialogue: 0,0:10:13.88,0:10:15.09,eva main,Comment,0000,0000,0000,,{\fnParla\fs35\b1\c&H293132&\frz9.564\bord2\shad0\3c&HBECAC1&\3a&H80&\pos(420,396)}Come. +Dialogue: 0,0:10:13.88,0:10:15.09,eva main,Comment,0000,0000,0000,,{\fnParla\b1\c&H293132&\frz9.564\bord2\shad0\3c&HBECAC1&\3a&H80&\pos(485,459)}Ikari Gendo +Dialogue: 0,0:10:15.80,0:10:18.20,eva main,Comment,0000,0000,0000,,Then read this. +Dialogue: 0,0:10:18.09,0:10:19.76,eva titles,Comment,0000,0000,0000,,{\frz2.561\bord0\shad0\c&H03100B&\pos(380,320)}Welcome to +Dialogue: 0,0:10:18.09,0:10:19.76,eva titles,Comment,0000,0000,0000,,{\frz2.561\bord0\shad0\c&H03100B&\i1\pos(380,353)}Nerv +Dialogue: 0,0:10:18.93,0:10:20.13,eva main,Comment,0000,0000,0000,,Nerv... +Dialogue: 0,0:10:21.00,0:10:22.26,eva main,Comment,0000,0000,0000,,My father's agency. +Dialogue: 0,0:10:23.00,0:10:25.06,eva main,Comment,0000,0000,0000,,Am I going to work for them too? +Dialogue: 0,0:10:27.01,0:10:28.50,eva main,Comment,0000,0000,0000,,Of course. +Dialogue: 0,0:10:28.68,0:10:32.81,eva main,Comment,0000,0000,0000,,He wouldn't have sent me a letter unless\nhe needed me for something. +Dialogue: 0,0:10:33.27,0:10:36.24,eva main,Comment,0000,0000,0000,,I see. So you don't get along with your father. +Dialogue: 0,0:10:37.65,0:10:39.24,eva main,Comment,0000,0000,0000,,It's the same with me. +Dialogue: 0,0:10:45.23,0:10:46.49,eva main,Comment,0000,0000,0000,,Awesome! +Dialogue: 0,0:10:47.70,0:10:49.39,eva main,Comment,0000,0000,0000,,It's the real Geo-Front! +Dialogue: 0,0:10:49.46,0:10:50.36,eva main,Comment,0000,0000,0000,,That's right. +Dialogue: 0,0:10:50.43,0:10:53.87,eva main,Comment,0000,0000,0000,,This is our secret base.\NNerv Headquarters. +Dialogue: 0,0:10:54.26,0:10:55.80,eva main,Comment,0000,0000,0000,,This is the key to rebuilding our world. +Dialogue: 0,0:10:55.87,0:10:58.34,eva main,Comment,0000,0000,0000,,A fortress for all mankind. +Dialogue: 1,0:11:04.91,0:11:10.18,eva main,Comment,0000,0000,0000,,That's strange. Isn't this the right way? +Dialogue: 0,0:11:07.10,0:11:08.64,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,90)}Nerv{\i0} Headquarters +Dialogue: 0,0:11:07.10,0:11:08.64,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,143)}Central Dogma +Dialogue: 0,0:11:07.10,0:11:08.64,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\pos(273,118)\bord0\shad0\c&H3B2C71&}Around here +Dialogue: 0,0:11:08.60,0:11:08.64,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,90)}Nerv{\i0} Headquarters +Dialogue: 0,0:11:08.64,0:11:08.68,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,99)}Nerv{\i0} Headquarters +Dialogue: 0,0:11:08.68,0:11:08.73,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,109)}Nerv{\i0} Headquarters +Dialogue: 0,0:11:08.73,0:11:08.77,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,125)}Nerv{\i0} Headquarters +Dialogue: 0,0:11:08.77,0:11:08.81,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,145)}Nerv{\i0} Headquarters +Dialogue: 0,0:11:08.81,0:11:08.85,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,186)}Nerv{\i0} Headquarters +Dialogue: 0,0:11:08.85,0:11:08.89,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,235)}Nerv{\i0} Headquarters +Dialogue: 0,0:11:08.89,0:11:08.93,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,285)}Nerv{\i0} Headquarters +Dialogue: 0,0:11:08.93,0:11:08.98,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,333)}Nerv{\i0} Headquarters +Dialogue: 0,0:11:08.98,0:11:09.02,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,394)}Nerv{\i0} Headquarters +Dialogue: 0,0:11:09.02,0:11:09.06,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,457)}Nerv{\i0} Headquarters +Dialogue: 0,0:11:08.60,0:11:08.64,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,143)}Central Dogma +Dialogue: 0,0:11:08.64,0:11:08.68,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,152)}Central Dogma +Dialogue: 0,0:11:08.68,0:11:08.73,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,162)}Central Dogma +Dialogue: 0,0:11:08.73,0:11:08.77,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,178)}Central Dogma +Dialogue: 0,0:11:08.77,0:11:08.81,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,198)}Central Dogma +Dialogue: 0,0:11:08.81,0:11:08.85,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,240)}Central Dogma +Dialogue: 0,0:11:08.85,0:11:08.89,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,287)}Central Dogma +Dialogue: 0,0:11:08.89,0:11:08.93,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,339)}Central Dogma +Dialogue: 0,0:11:08.93,0:11:08.98,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,384)}Central Dogma +Dialogue: 0,0:11:08.98,0:11:09.02,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,447)}Central Dogma +Dialogue: 0,0:11:08.64,0:11:08.68,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(275,128)}Around here +Dialogue: 0,0:11:08.68,0:11:08.73,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(275,138)}Around here +Dialogue: 0,0:11:08.73,0:11:08.77,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(275,154)}Around here +Dialogue: 0,0:11:08.77,0:11:08.81,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(275,171)}Around here +Dialogue: 0,0:11:08.81,0:11:08.85,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(275,213)}Around here +Dialogue: 0,0:11:08.85,0:11:08.89,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(275,262)}Around here +Dialogue: 0,0:11:08.89,0:11:08.93,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(276,312)}Around here +Dialogue: 0,0:11:08.93,0:11:08.98,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(275,358)}Around here +Dialogue: 0,0:11:08.98,0:11:09.02,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(273,420)}Around here +Dialogue: 0,0:11:09.02,0:11:09.06,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(281,480)}Around here +Dialogue: 0,0:11:10.89,0:11:12.49,eva bg broadcast,Comment,0000,0000,0000,,Central Dogma's closed passages\nremain sealed. +Dialogue: 0,0:11:12.49,0:11:15.29,eva main,Comment,0000,0000,0000,,This is why I hate wearing skirts here. +Dialogue: 0,0:11:12.92,0:11:17.76,eva bg broadcast,Comment,0000,0000,0000,,Opening block B-26 in sequence. +Dialogue: 0,0:11:15.79,0:11:18.56,eva main,Comment,0000,0000,0000,,But where the heck did Ritsuko go? +Dialogue: 0,0:11:18.63,0:11:21.42,eva main,Comment,0000,0000,0000,,I'm sorry. I'm just not used to this place yet. +Dialogue: 0,0:11:21.50,0:11:23.49,eva main,Comment,0000,0000,0000,,We passed this spot just a little while ago. +Dialogue: 0,0:11:24.87,0:11:26.30,eva main,Comment,0000,0000,0000,,But don't worry about it. +Dialogue: 0,0:11:26.37,0:11:29.24,eva main,Comment,0000,0000,0000,,They make these systems\nto be used, you know. +Dialogue: 0,0:11:29.24,0:11:31.97,eva bg broadcast,Comment,0000,0000,0000,,Would the head of Project E,\NTechnical Department Division 1, +Dialogue: 0,0:11:31.97,0:11:34.84,eva bg broadcast,Comment,0000,0000,0000,,Dr. Akagi Ritsuko, Dr. Akagi Ritsuko, +Dialogue: 0,0:11:34.84,0:11:39.48,eva bg broadcast,Comment,0000,0000,0000,,please contact Captain Katsuragi Misato\nof Operations, Division 1, immediately. +Dialogue: 0,0:11:39.61,0:11:41.45,eva main,Comment,0000,0000,0000,,I don't believe it. +Dialogue: 0,0:11:41.45,0:11:42.42,eva main,Comment,0000,0000,0000,,She got lost again, didn't she? +Dialogue: 0,0:11:46.89,0:11:48.95,eva main,Comment,0000,0000,0000,,Uh, hiya, Ritsuko. +Dialogue: 0,0:11:53.63,0:11:55.99,eva main,Comment,0000,0000,0000,,What were you doing, Captain Katsuragi? +Dialogue: 0,0:11:56.10,0:11:58.33,eva main,Comment,0000,0000,0000,,We're short on both time\nand manpower, you know. +Dialogue: 0,0:11:58.83,0:11:59.86,eva main,Comment,0000,0000,0000,,Sorry! +Dialogue: 0,0:12:03.14,0:12:04.97,eva main,Comment,0000,0000,0000,,So this is the boy? +Dialogue: 0,0:12:05.04,0:12:08.98,eva main,Comment,0000,0000,0000,,Right. According to the Marduk report,\nhe's the "Third Child". +Dialogue: 0,0:12:09.68,0:12:10.77,eva main,Comment,0000,0000,0000,,I'm glad to meet you. +Dialogue: 0,0:12:10.85,0:12:12.68,eva main,Comment,0000,0000,0000,,Huh? Sure. +Dialogue: 0,0:12:13.00,0:12:17.88,eva main,Comment,0000,0000,0000,,He's just like his father.\NLike how he's unendearing. +Dialogue: 0,0:12:18.25,0:12:19.51,eva main,Comment,0000,0000,0000,,I'll leave the rest to you. +Dialogue: 0,0:12:23.96,0:12:26.19,eva main,Comment,0000,0000,0000,,Their first meeting in over three years. +Dialogue: 0,0:12:27.23,0:12:30.89,eva main,Comment,0000,0000,0000,,Vice Commander, the target\nhas started moving again. +Dialogue: 0,0:12:30.97,0:12:34.37,eva main,Comment,0000,0000,0000,,Right. All personnel, assume\nbattle stations, Level One. +Dialogue: 0,0:12:34.54,0:12:37.91,eva bg broadcast,Comment,0000,0000,0000,,Repeat. All personnel, assume\nbattle stations, Level One. +Dialogue: 0,0:12:37.91,0:12:39.30,eva bg broadcast,Comment,0000,0000,0000,,Prepare for ground-unit interception. +Dialogue: 0,0:12:39.81,0:12:41.04,eva main,Comment,0000,0000,0000,,Here we go. +Dialogue: 0,0:12:41.04,0:12:42.27,eva main,Comment,0000,0000,0000,,It sounds pretty serious. +Dialogue: 0,0:12:43.41,0:12:45.58,eva main,Comment,0000,0000,0000,,So, how's Unit 01 doing? +Dialogue: 0,0:12:45.58,0:12:47.95,eva main,Comment,0000,0000,0000,,It's currently in refrigeration,\nusing the B-type equipment. +Dialogue: 0,0:12:47.95,0:12:51.95,eva main,Comment,0000,0000,0000,,Does it really work?\NIt's never worked before, right? +Dialogue: 0,0:12:51.95,0:12:56.89,eva main,Comment,0000,0000,0000,,The possibility of activation is 0.000000001%. +Dialogue: 0,0:12:57.49,0:12:59.99,eva main,Comment,0000,0000,0000,,We call it, pathetically enough,\nthe O-9 System. +Dialogue: 0,0:12:59.99,0:13:02.66,eva main,Comment,0000,0000,0000,,Does that mean it doesn't work? +Dialogue: 0,0:13:02.66,0:13:05.13,eva main,Comment,0000,0000,0000,,Oh, don't be insulting. It's not zero. +Dialogue: 0,0:13:05.13,0:13:06.83,eva main,Comment,0000,0000,0000,,Well, it's just a number. +Dialogue: 0,0:13:06.90,0:13:11.43,eva main,Comment,0000,0000,0000,,Anyway, it's a bit too late to be saying,\N"Sorry, it didn't work". +Dialogue: 0,0:13:20.05,0:13:22.81,eva main,Comment,0000,0000,0000,,Huh? It's completely dark. +Dialogue: 0,0:13:26.39,0:13:29.15,eva main,Comment,0000,0000,0000,,A face? A giant robot? +Dialogue: 0,0:13:30.86,0:13:33.02,eva main,Comment,0000,0000,0000,,You won't find this in the manual. +Dialogue: 0,0:13:34.16,0:13:38.13,eva main,Comment,0000,0000,0000,,This is mankind's ultimate\nmultipurpose decisive weapon, +Dialogue: 0,0:13:38.13,0:13:42.04,eva main,Comment,0000,0000,0000,,the synthetic human Evangelion, Unit 01. +Dialogue: 0,0:13:42.04,0:13:47.28,eva main,Comment,0000,0000,0000,,Built in absolute secrecy,\nit is mankind's trump card. +Dialogue: 0,0:13:47.28,0:13:49.28,eva main,Comment,0000,0000,0000,,Is this part of what my father's been doing? +Dialogue: 0,0:13:49.28,0:13:50.18,eva broadcast,Comment,0000,0000,0000,,Correct. +Dialogue: 0,0:13:52.15,0:13:53.48,eva main,Comment,0000,0000,0000,,It's been a while. +Dialogue: 0,0:13:54.55,0:13:55.68,eva main,Comment,0000,0000,0000,,Father... +Dialogue: 0,0:13:58.75,0:13:59.52,eva main,Comment,0000,0000,0000,,We're moving out! +Dialogue: 0,0:14:00.02,0:14:03.48,eva main,Comment,0000,0000,0000,,Moving out?! Unit 00's still in\ncryo-stasis, isn't it? +Dialogue: 0,0:14:05.43,0:14:07.62,eva main,Comment,0000,0000,0000,,You're not planning to use Unit 01?! +Dialogue: 0,0:14:08.43,0:14:09.96,eva main,Comment,0000,0000,0000,,There's no other way. +Dialogue: 0,0:14:09.96,0:14:12.83,eva main,Comment,0000,0000,0000,,Hold on! Rei can't do it yet, can she? +Dialogue: 0,0:14:13.77,0:14:15.17,eva main,Comment,0000,0000,0000,,We've got no pilot! +Dialogue: 0,0:14:16.10,0:14:17.26,eva main,Comment,0000,0000,0000,,A pilot has just been delivered. +Dialogue: 0,0:14:18.54,0:14:19.56,eva main,Comment,0000,0000,0000,,Are you serious? +Dialogue: 0,0:14:20.54,0:14:21.61,eva main,Comment,0000,0000,0000,,Ikari Shinji-kun... +Dialogue: 0,0:14:21.61,0:14:22.71,eva main,Comment,0000,0000,0000,,Yes? +Dialogue: 0,0:14:22.71,0:14:23.73,eva main,Comment,0000,0000,0000,,You will pilot it. +Dialogue: 0,0:14:24.45,0:14:29.44,eva main,Comment,0000,0000,0000,,But even Ayanami Rei took seven months\nto synchronize with her Eva. +Dialogue: 0,0:14:29.62,0:14:32.25,eva main,Comment,0000,0000,0000,,It's impossible for him to do it!\NHe just got here! +Dialogue: 0,0:14:32.32,0:14:35.12,eva main,Comment,0000,0000,0000,,He just has to sit in the seat.\NWe don't expect more than that. +Dialogue: 0,0:14:35.19,0:14:36.18,eva main,Comment,0000,0000,0000,,But... +Dialogue: 0,0:14:36.26,0:14:38.92,eva main,Comment,0000,0000,0000,,Repelling that Angel is our ultimate priority. +Dialogue: 0,0:14:39.43,0:14:43.02,eva main,Comment,0000,0000,0000,,To do that, we have no choice but to put\naboard the Eva whomever has the chance +Dialogue: 0,0:14:43.10,0:14:45.62,eva main,Comment,0000,0000,0000,,to synchronize with it, no matter how slight. +Dialogue: 0,0:14:46.87,0:14:48.80,eva main,Comment,0000,0000,0000,,I believe you know that, Captain Katsuragi. +Dialogue: 0,0:14:51.27,0:14:52.60,eva main,Comment,0000,0000,0000,,I suppose... +Dialogue: 0,0:14:54.21,0:14:56.61,eva main,Comment,0000,0000,0000,,Father, why did you send for me? +Dialogue: 0,0:14:56.61,0:14:58.75,eva main,Comment,0000,0000,0000,,You know exactly why. +Dialogue: 0,0:14:58.75,0:15:02.65,eva main,Comment,0000,0000,0000,,So, you're asking me to take this thing\nand fight that thing? +Dialogue: 0,0:15:03.35,0:15:04.35,eva main,Comment,0000,0000,0000,,That's right. +Dialogue: 0,0:15:04.35,0:15:08.02,eva main,Comment,0000,0000,0000,,No way! Why are you doing this now?! +Dialogue: 0,0:15:08.02,0:15:10.63,eva main,Comment,0000,0000,0000,,I thought you didn't need me! +Dialogue: 0,0:15:10.63,0:15:12.82,eva main,Comment,0000,0000,0000,,I called you because I have a need for you. +Dialogue: 0,0:15:15.40,0:15:16.83,eva main,Comment,0000,0000,0000,,Why me? +Dialogue: 0,0:15:17.47,0:15:19.70,eva main,Comment,0000,0000,0000,,Because no one else can. +Dialogue: 0,0:15:20.37,0:15:22.06,eva main,Comment,0000,0000,0000,,No, I can't... +Dialogue: 0,0:15:22.50,0:15:26.03,eva main,Comment,0000,0000,0000,,I've never even seen anything\nlike this before! I can't do this! +Dialogue: 0,0:15:27.01,0:15:28.41,eva main,Comment,0000,0000,0000,,You will be instructed. +Dialogue: 0,0:15:29.04,0:15:32.88,eva main,Comment,0000,0000,0000,,But there's no way I can do this! +Dialogue: 0,0:15:33.71,0:15:35.74,eva main,Comment,0000,0000,0000,,I can't pilot it! +Dialogue: 0,0:15:37.22,0:15:40.24,eva main,Comment,0000,0000,0000,,If you're going to pilot it, do it now\nand quickly. If not, leave! +Dialogue: 0,0:15:51.93,0:15:54.46,eva main,Comment,0000,0000,0000,,It must have detected our location. +Dialogue: 0,0:15:58.11,0:16:00.04,eva main,Comment,0000,0000,0000,,Shinji-kun, we don't have time. +Dialogue: 0,0:16:05.08,0:16:06.24,eva main,Comment,0000,0000,0000,,Get into it. +Dialogue: 0,0:16:07.31,0:16:11.98,eva main,Comment,0000,0000,0000,,No! I didn't come for this! This isn't fair! +Dialogue: 0,0:16:13.25,0:16:16.69,eva main,Comment,0000,0000,0000,,Shinji-kun, just why did you come here? +Dialogue: 0,0:16:18.59,0:16:22.69,eva main,Comment,0000,0000,0000,,You mustn't run! Not from your father,\nand most of all not from yourself. +Dialogue: 0,0:16:23.33,0:16:27.39,eva main,Comment,0000,0000,0000,,I know that! But there's no way I can do it! +Dialogue: 0,0:16:35.54,0:16:36.53,eva main,Comment,0000,0000,0000,,Fuyutsuki... +Dialogue: 0,0:16:37.85,0:16:39.25,eva main,Comment,0000,0000,0000,,Wake up Rei. +Dialogue: 0,0:16:39.25,0:16:40.75,eva broadcast,Comment,0000,0000,0000,,Can we use her? +Dialogue: 0,0:16:40.75,0:16:42.31,eva main,Comment,0000,0000,0000,,She isn't dead. +Dialogue: 0,0:16:43.45,0:16:44.58,eva broadcast,Comment,0000,0000,0000,,I understand. +Dialogue: 0,0:16:46.39,0:16:47.25,eva main,Comment,0000,0000,0000,,Rei. +Dialogue: 0,0:16:47.25,0:16:48.39,eva main,Comment,0000,0000,0000,,Yes? +Dialogue: 0,0:16:48.39,0:16:51.26,eva main,Comment,0000,0000,0000,,Our spare is unusable. You will do it again. +Dialogue: 0,0:16:51.26,0:16:52.23,eva main,Comment,0000,0000,0000,,Yes, Sir. +Dialogue: 0,0:16:54.50,0:16:57.93,eva main,Comment,0000,0000,0000,,Reconfigure Unit 01's system to Rei,\nthen re-activate! +Dialogue: 0,0:16:57.93,0:17:00.99,eva broadcast,Comment,0000,0000,0000,,Roger. Call off the present work,\nand begin re-activation. +Dialogue: 0,0:17:02.97,0:17:06.80,eva main,Comment,0000,0000,0000,,I knew it. I'm not needed after all. +Dialogue: 0,0:17:40.67,0:17:41.70,eva main,Comment,0000,0000,0000,,Watch out! +Dialogue: 0,0:17:51.32,0:17:52.89,eva broadcast,Comment,0000,0000,0000,,The Eva moved! +Dialogue: 0,0:17:52.89,0:17:54.09,eva broadcast,Comment,0000,0000,0000,,What's going on?! +Dialogue: 0,0:17:54.09,0:17:56.46,eva broadcast,Comment,0000,0000,0000,,It broke the right arm restraint! +Dialogue: 0,0:17:56.46,0:17:58.02,eva main,Comment,0000,0000,0000,,No, that's impossible! +Dialogue: 0,0:17:58.53,0:18:00.73,eva main,Comment,0000,0000,0000,,It didn't even have an entry plug inserted! +Dialogue: 0,0:18:00.73,0:18:01.96,eva main,Comment,0000,0000,0000,,There's no way it could have moved! +Dialogue: 0,0:18:03.10,0:18:05.33,eva main,Comment,0000,0000,0000,,It reacted without any interface?! +Dialogue: 0,0:18:06.13,0:18:08.20,eva main,Comment,0000,0000,0000,,Or was it protecting... +Dialogue: 0,0:18:08.20,0:18:09.23,eva main,Comment,0000,0000,0000,,him? +Dialogue: 0,0:18:10.54,0:18:11.53,eva main,Comment,0000,0000,0000,,We can do it. +Dialogue: 0,0:18:32.56,0:18:37.16,eva main,Comment,0000,0000,0000,,I mustn't run away. I mustn't run away.\NI mustn't run away. I mustn't run away. +Dialogue: 0,0:18:37.16,0:18:38.32,eva main,Comment,0000,0000,0000,,I mustn't run away! +Dialogue: 0,0:18:39.77,0:18:40.67,eva main,Comment,0000,0000,0000,,I'll do it. +Dialogue: 0,0:18:41.37,0:18:42.49,eva main,Comment,0000,0000,0000,,I'll pilot it! +Dialogue: 0,0:18:46.04,0:18:47.34,eva broadcast,Comment,0000,0000,0000,,Cooling process, completed. +Dialogue: 0,0:18:47.34,0:18:48.88,eva broadcast,Comment,0000,0000,0000,,Right arm re-secured. +Dialogue: 0,0:18:48.88,0:18:50.91,eva broadcast,Comment,0000,0000,0000,,Cage contents now in position for docking. +Dialogue: 0,0:18:50.91,0:18:51.85,eva main,Comment,0000,0000,0000,,Roger. +Dialogue: 0,0:18:51.85,0:18:54.68,eva main,Comment,0000,0000,0000,,Signal terminator plug has been ejected. +Dialogue: 0,0:18:55.22,0:18:57.82,eva broadcast,Comment,0000,0000,0000,,Roger. Inserting entry plug. +Dialogue: 0,0:18:57.82,0:19:00.88,eva broadcast,Comment,0000,0000,0000,,Direct hydro-transmission system,\nconnection prepared. +Dialogue: 0,0:19:04.93,0:19:06.43,eva broadcast,Comment,0000,0000,0000,,Plug fixed in place. +Dialogue: 0,0:19:06.43,0:19:08.16,eva broadcast,Comment,0000,0000,0000,,First stage connection initiated. +Dialogue: 0,0:19:13.07,0:19:14.90,eva broadcast,Comment,0000,0000,0000,,Filling the entry plug. +Dialogue: 0,0:19:16.07,0:19:17.47,eva main,Comment,0000,0000,0000,,What is this stuff? +Dialogue: 0,0:19:21.41,0:19:24.45,eva main,Comment,0000,0000,0000,,Don't worry. Once your lungs\nare filled with LCL, +Dialogue: 0,0:19:24.45,0:19:27.21,eva main,Comment,0000,0000,0000,,your blood will be oxygenated directly. +Dialogue: 0,0:19:27.21,0:19:28.55,eva broadcast,Comment,0000,0000,0000,,You'll get used to it. +Dialogue: 0,0:19:32.02,0:19:33.45,eva main,Comment,0000,0000,0000,,I feel nauseous. +Dialogue: 0,0:19:33.45,0:19:35.72,eva main,Comment,0000,0000,0000,,Stop whining! You're a boy, aren't you?! +Dialogue: 0,0:19:37.02,0:19:38.16,eva broadcast,Comment,0000,0000,0000,,Connecting main power. +Dialogue: 0,0:19:38.16,0:19:40.86,eva broadcast,Comment,0000,0000,0000,,All circuits transmitting power. +Dialogue: 0,0:19:40.86,0:19:41.70,eva broadcast,Comment,0000,0000,0000,,Roger. +Dialogue: 0,0:19:41.70,0:19:43.36,eva broadcast,Comment,0000,0000,0000,,Commencing secondary contacts. +Dialogue: 0,0:19:44.93,0:19:47.37,eva broadcast,Comment,0000,0000,0000,,A-10 nerve connection, normal. +Dialogue: 0,0:19:47.37,0:19:52.57,eva broadcast,Comment,0000,0000,0000,,Set the thought configuration to Japanese. +Dialogue: 0,0:19:53.44,0:19:55.88,eva broadcast,Comment,0000,0000,0000,,All preliminary contacts established.\NPerformance nominal. +Dialogue: 0,0:19:55.88,0:19:57.67,eva broadcast,Comment,0000,0000,0000,,Bi-directional circuits are open. +Dialogue: 0,0:19:58.21,0:20:00.74,eva broadcast,Comment,0000,0000,0000,,Synchronization rate at 41.3%. +Dialogue: 0,0:20:01.38,0:20:02.62,eva main,Comment,0000,0000,0000,,Amazing. +Dialogue: 0,0:20:02.62,0:20:06.21,eva main,Comment,0000,0000,0000,,Harmonics are all normal.\NNo disturbances identified. +Dialogue: 0,0:20:06.99,0:20:08.01,eva main,Comment,0000,0000,0000,,We can do it. +Dialogue: 0,0:20:09.39,0:20:10.62,eva main,Comment,0000,0000,0000,,Prepare to launch! +Dialogue: 0,0:20:12.59,0:20:14.13,eva broadcast,Comment,0000,0000,0000,,Prepare to launch! +Dialogue: 0,0:20:14.13,0:20:15.60,eva broadcast,Comment,0000,0000,0000,,Disengage primary lock bolts! +Dialogue: 0,0:20:17.13,0:20:20.29,eva broadcast,Comment,0000,0000,0000,,Disengage confirmed.\NDisengaging the umbilical bridge. +Dialogue: 0,0:20:22.70,0:20:24.10,eva broadcast,Comment,0000,0000,0000,,Disengage secondary lock bolts. +Dialogue: 0,0:20:26.44,0:20:28.38,eva broadcast,Comment,0000,0000,0000,,Disengage primary restraints. +Dialogue: 0,0:20:28.38,0:20:30.81,eva broadcast,Comment,0000,0000,0000,,Likewise, disengage secondary restraints. +Dialogue: 0,0:20:34.28,0:20:37.22,eva broadcast,Comment,0000,0000,0000,,Release safety locks numbers\none through fifteen. +Dialogue: 0,0:20:37.22,0:20:38.24,eva broadcast,Comment,0000,0000,0000,,Release confirmed. +Dialogue: 0,0:20:38.65,0:20:40.79,eva broadcast,Comment,0000,0000,0000,,Currently, Unit 01's condition is free. +Dialogue: 0,0:20:40.79,0:20:42.42,eva broadcast,Comment,0000,0000,0000,,Internal batteries fully charged. +Dialogue: 0,0:20:42.42,0:20:44.45,eva broadcast,Comment,0000,0000,0000,,External battery outlet, normal. +Dialogue: 0,0:20:45.03,0:20:47.96,eva main,Comment,0000,0000,0000,,Roger. Move Eva Unit 01\nto the ejector pad. +Dialogue: 0,0:21:03.54,0:21:05.44,eva main,Comment,0000,0000,0000,,Launch path is clear. All systems green. +Dialogue: 0,0:21:05.85,0:21:07.18,eva main,Comment,0000,0000,0000,,Ready for launch. +Dialogue: 0,0:21:08.25,0:21:09.18,eva main,Comment,0000,0000,0000,,Roger. +Dialogue: 0,0:21:10.02,0:21:11.12,eva main,Comment,0000,0000,0000,,Can we really do this? +Dialogue: 0,0:21:11.12,0:21:12.18,eva main,Comment,0000,0000,0000,,Of course. +Dialogue: 0,0:21:13.05,0:21:15.61,eva main,Comment,0000,0000,0000,,Unless we defeat the Angels,\nwe have no future. +Dialogue: 0,0:21:17.19,0:21:20.18,eva main,Comment,0000,0000,0000,,Ikari, you're really sure about this? +Dialogue: 0,0:21:21.83,0:21:22.80,eva main,Comment,0000,0000,0000,,Launch! +Dialogue: 0,0:21:56.76,0:21:58.86,eva main,Comment,0000,0000,0000,,Shinji-kun, don't get killed out there. +Dialogue: 0,0:21:58.83,0:22:00.46,eva titles,Comment,0000,0000,0000,,{\fsp-3\fs80\pos(531,377)}To Be Continued +Dialogue: 0,0:23:05.86,0:23:06.77,eva titles,Comment,0000,0000,0000,,{\pos(352,487)\fsp-3}Preview +Dialogue: 0,0:23:06.77,0:23:08.14,eva main,Comment,0000,0000,0000,,Eva triumphs over the Angel! +Dialogue: 0,0:23:08.14,0:23:10.40,eva main,Comment,0000,0000,0000,,However, that was just the beginning. +Dialogue: 0,0:23:10.64,0:23:12.27,eva main,Comment,0000,0000,0000,,Shinji runs away from his father. +Dialogue: 0,0:23:12.27,0:23:15.67,eva main,Comment,0000,0000,0000,,Misato's arrogance leads her\nto try to save him. +Dialogue: 0,0:23:16.04,0:23:18.41,eva main,Comment,0000,0000,0000,,Next Evangelion: "Unfamiliar Ceiling" +Dialogue: 0,0:23:18.41,0:23:20.45,eva main,Comment,0000,0000,0000,,I'll give you fan service next time too! +Dialogue: 0,0:23:18.83,0:23:20.87,eva titles,Comment,0000,0000,0000,,{\c&H071914&\fsp-3\pos(353,389)}Unfamiliar Ceiling +Dialogue: 0,0:23:18.83,0:23:20.87,eva titles,Comment,0000,0000,0000,,{\c&H071914&\fs60\fsp-2\pos(343,85)}Next Episode diff --git a/unit_test/unit_test.vcproj b/unit_test/unit_test.vcproj index d92b9db47..c847b907d 100644 --- a/unit_test/unit_test.vcproj +++ b/unit_test/unit_test.vcproj @@ -176,10 +176,22 @@ RelativePath=".\src\suites.h" > + + + + + +