public void TestFiles() { LogReport logReport = new LogReport(); LogFile logFile1 = new LogFile(settings.GetCvsRoot()); logFile1.RepositoryFnm = "File1"; logReport.AddFile(logFile1); LogFile logFile2 = new LogFile(settings.GetCvsRoot()); logFile2.RepositoryFnm = "File2"; logReport.AddFile(logFile2); LogFile logFile3 = new LogFile(settings.GetCvsRoot()); logFile3.RepositoryFnm = "File3"; logReport.AddFile(logFile3); Assert.AreEqual(3, logReport.Count); // Test indexer Assert.AreEqual("File1", logReport[0].RepositoryFnm); Assert.AreEqual("File2", logReport[1].RepositoryFnm); Assert.AreEqual("File3", logReport[2].RepositoryFnm); // Test foreach int nIndex = 0; foreach (LogFile logFile in logReport) { Assert.IsTrue(nIndex <= 2); if (nIndex == 0) { Assert.AreEqual("File1", logFile.RepositoryFnm); } else if (nIndex == 1) { Assert.AreEqual("File2", logFile.RepositoryFnm); } else if (nIndex == 2) { Assert.AreEqual("File3", logFile.RepositoryFnm); } nIndex++; } }
/// <summary> /// This is called for each Message response we receive from the cvs server. /// </summary> public void OnMessage(string message) { // System.Console.WriteLine(message); // for some reason the message handler is now preceeding // each message with "cvs server: " so we need to strip this off first if (message.StartsWith("cvs server: ")) { message = message.Substring(12); } // only process the lines starting with "M " if (message.StartsWith("M ")) { // Strip of the leading "M " message = message.Substring(2); if (message.StartsWith(revisionEndPrefix)) { // seperator between file and revision or between revisions if (logState == LogState.WANT_FILE_HEADER_START) { // ignore this (shouldn't happen) } else if (logState == LogState.WANT_FILE_HEADER || logState == LogState.WANT_FILE_DESCRIPTION) { // this is the seperator between te file header and the first revision } else { // seperator between revisions curLogFile.AddRevision(curLogRevision); } curLogRevision = new LogRevision(); logState = LogState.WANT_REVISION; } else if (message.StartsWith(fileEndPrefix)) { // seperator between files if (logState == LogState.WANT_FILE_HEADER_START) { // ignore this (shouldn't happen) } else if (logState == LogState.WANT_FILE_HEADER || logState == LogState.WANT_FILE_DESCRIPTION) { // file with no revisions curLogReport.AddFile(curLogFile); } else { // first add the revision curLogFile.AddRevision(curLogRevision); curLogRevision = new LogRevision(); // and now the file curLogReport.AddFile(curLogFile); } curLogFile = new LogFile(this.cvsRoot); logState = LogState.WANT_FILE_HEADER_START; } else { switch (logState) { case LogState.WANT_FILE_HEADER_START: // drop into WANT_FILE_HEADER case LogState.WANT_FILE_HEADER_SYMBOLIC_NAMES: // drop into WANT_FILE_HEADER case LogState.WANT_FILE_HEADER: OnMessageHeader(message); break; case LogState.WANT_FILE_DESCRIPTION: OnMessageDescription(message); break; case LogState.WANT_REVISION: OnMessageRevision(message); break; } } } }