// Preprocessing: doppelte Whitespaces, doppelte Linefeeds; WS vor LF; Nach Punkt Zeilenumbruch // leeren Sätze nach LF, Komma im Satz => Nur Satzanfang! public virtual string Compile(string buddyText) { BuddyTextProcessor buddyTextProcessor = new BuddyTextProcessor(); buddyTextProcessor.ProcessText(buddyText); return(null); }
public void FullFeaturedText_Ok() { // Arrange Stream prgStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Bumblebee.buddy.compiler.tests.resources.BuddyFullFeaturedTestCase.btc"); if (prgStream == null) { Assert.Fail("'BuddyFullFeaturedTestCase.btc' not found!"); } string testCase = new StreamReader(prgStream).ReadToEnd(); // Act BuddyTextProcessor processor = new BuddyTextProcessor(); BuddyTextInfo result = processor.ProcessText(testCase); // Assert Assert.IsNotNull(result, "result != null"); Assert.AreEqual(8, result.Steps.Length, "result.Steps.Length != 8"); Assert.AreEqual("EGUB", result.ApplicationText, "result.ApplicationText != 'EGUB'"); Assert.AreEqual("Anmeldung an EGUB", result.UseCaseText, "result.UseCaseText != 'Anmeldung an EGUB'"); Assert.AreEqual("Erfolgreiche Anmeldung", result.ScenarioText, "result.ScenarioText != 'Erfolgreiche Anmeldung'"); Assert.AreEqual("-", result.Precondition, "result.Precondition != '-'"); CollectionAssert.AreEqual(new[] { new BuddyTextParameter("piNr", "\"000\""), new BuddyTextParameter("pass", "\"Passw001\""), }, result.Parameters); Assert.AreEqual("Starte \"C:\\EGUB\\EGUB.exe\".", result.Steps[0]); Assert.AreEqual("Warte bis Fenster <WindowAnmeldung> sichtbar ist.", result.Steps[1]); Assert.AreEqual("Wähle in <ListboxPinr> den Wert $piNr aus.", result.Steps[2]); Assert.AreEqual("Setze in <TextboxPass> den Wert $pass ein.", result.Steps[3]); Assert.AreEqual("Klicke den Button <ButtonAnmelden> einfach.", result.Steps[4]); Assert.AreEqual("Warte bis Fenster <MainWindowEgub> sichtbar ist.", result.Steps[5]); Assert.AreEqual("Klicke den Button <MainWindowClose> einfach.", result.Steps[6]); Assert.AreEqual("Warte bis Anwendung geschlossen ist.", result.Steps[7]); }
public void NullTextProcessing_Ok() { BuddyTextProcessor processor = new BuddyTextProcessor(); BuddyTextInfo result = processor.ProcessText(null); Assert.IsNull(result, "result != null"); }
public void FullFeaturedImportingText_Ok() { // Arrange Stream prgStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Bumblebee.buddy.compiler.tests.resources.BuddyFullFeaturedImportingTestCase.btc"); if (prgStream == null) { Assert.Fail("'BuddyFullFeaturedImportingTestCase.btc' not found!"); } string testCase = new StreamReader(prgStream).ReadToEnd(); // Act BuddyTextProcessor processor = new BuddyTextProcessor(); BuddyTextInfo result = processor.ProcessText(testCase); // Assert Assert.IsNotNull(result, "result != null"); Assert.AreEqual(7, result.Steps.Length, "result.Steps.Length != 8"); Assert.AreEqual("EGUB", result.ApplicationText, "result.ApplicationText != 'EGUB'"); Assert.AreEqual("*", result.VersionText, "result.VersionText != '*'"); Assert.AreEqual("Anmeldung an EGUB", result.UseCaseText, "result.UseCaseText != 'Anmeldung an EGUB'"); Assert.AreEqual("Erfolgreiche Anmeldung", result.ScenarioText, "result.ScenarioText != 'Erfolgreiche Anmeldung'"); Assert.AreEqual("-", result.Precondition, "result.Precondition != '-'"); CollectionAssert.AreEqual(new[] { new BuddyTextParameter("piNr", "\"000\""), new BuddyTextParameter("pass", "\"Passw001\""), }, result.Parameters); Assert.AreEqual("Starte \"C:\\EGUB\\EGUB.exe\".", result.Steps[0]); Assert.AreEqual("Führe [Anmeldung] ($piNr, $pass) aus.", result.Steps[1]); Assert.AreEqual("Führe [Öffnen und Schließen] aus.", result.Steps[2]); Assert.AreEqual("Führe [Neustart aus dem Modul heraus] (\"Adresse\", \"Mitarbeiter\", $modul) aus.", result.Steps[3]); Assert.AreEqual("Warte bis Fenster <MainWindowEgub> sichtbar ist.", result.Steps[4]); Assert.AreEqual("Klicke den Button <MainWindowClose> einfach.", result.Steps[5]); Assert.AreEqual("Warte bis Anwendung geschlossen ist.", result.Steps[6]); }
/// <summary> /// Creates a new instance. /// </summary> /// <exception cref="BuddyCompilerException"/> public BuddyCompiler() { try { _buddyTextProcessor = new BuddyTextProcessor(); _instructionTranslator = new InstructionTranslator(); _importPathProvider = NullImportPathProvider.Instance; } catch (Exception ex) { throw new BuddyCompilerException("Error on initializing Buddy Compiler", ex); } }
public void ProcessText() { // Arrange string buddyText = GetBuddyTextForTest(); // Act BuddyTextProcessor buddyTextProcessor = new BuddyTextProcessor(); TestcaseContext testcaseContext = buddyTextProcessor.ProcessText(buddyText); // Assert Assert.IsNotNull(testcaseContext, "testcaseContext != null"); ApplicationContext appCtx = testcaseContext.Application; Assert.IsNotNull(appCtx, "appCtx != null"); Assert.AreEqual("Verwaltung", appCtx.Name, "appCtx.Name != Verwaltung"); Version appVrsn = appCtx.Version; Assert.IsNotNull(appVrsn, "appVrsn != null"); Assert.AreEqual("9.512", appVrsn.Min, "appVrsn.Min != 9.512"); Assert.AreEqual("*", appVrsn.Max, "appVrsn.Max != *"); UsecaseContext usecaseCtx = testcaseContext.Usecase; Assert.IsNotNull(usecaseCtx, "usecaseCtx != null"); Assert.AreEqual("Mitarbeitermodul von GTÜ", usecaseCtx.Name, "usecaseCtx.Name has unexpected value"); ScenarioContext sceneCtx = testcaseContext.Scenario; Assert.IsNotNull(sceneCtx, "sceneCtx != null"); Assert.AreEqual("1. Grundtest ", sceneCtx.Name, "sceneCtx.Name has unexpected value"); ScenarioParameter[] sceneArgs = sceneCtx.ScenarioParameters; Assert.IsNotNull(sceneArgs, "sceneArgs != null"); Assert.AreEqual(3, sceneArgs.Length, "sceneArgs.Length != 3"); Assert.AreEqual("piNr", sceneArgs[0].Name, "sceneArgs[0].Name != piNr"); Assert.AreEqual("\"001\"", sceneArgs[0].Value, "sceneArgs[0].Value != \"001\""); Assert.AreEqual("piPass", sceneArgs[1].Name, "sceneArgs[1].Name != piPass"); Assert.AreEqual("\"Passw001\"", sceneArgs[1].Value, "sceneArgs[1].Value != \"Passw001\""); Assert.AreEqual("tabelle", sceneArgs[2].Name, "sceneArgs[2].Name != tabelle"); Assert.AreEqual("\"C:\\daten\\lfz.xls\"", sceneArgs[2].Value, "sceneArgs[2].Value != \"C:\\daten\\lfz.xls\""); Import[] importSet = testcaseContext.Imports; Assert.IsNotNull(importSet, "importSet != null"); Assert.AreEqual(2, importSet.Length, "importSet.Length != 2"); Assert.AreEqual("Verwaltung.s.Mitarbeitermodul.Meine_Daten_bearbeiten", importSet[0].Name, "importSet[0].Name has unexpected value"); Assert.AreEqual("Verwaltung.s.Mitarbeitermodul.Rechte_wiederherstellen", importSet[1].Name, "importSet[1].Name has unexpected value"); StepsContext stepsContext = testcaseContext.Steps; Assert.IsNotNull(stepsContext, "stepsContext != null"); DirectiveContext[] directiveSet = stepsContext.Directives; Assert.IsNotNull(directiveSet, "directiveSet != null"); Assert.AreEqual(8, directiveSet.Length, "directiveSet.Length != 8"); DirectiveContext frstDir = directiveSet[0]; Assert.AreEqual(5, frstDir.References.Length, "[1] directive: Unexpected reference count"); Assert.AreEqual("Wähle", frstDir.References[0].Value, "[1] directive: Unexpected verb"); Assert.IsAssignableFrom <ParameterReference>(frstDir.References[1], "[1] directive: Unexpected reference type"); Assert.AreEqual("piNr", frstDir.References[1].Value, "[1] directive: Unexpected reference value"); }