From 870a4d560f09e2667044fc3f28ee8fea5a88df39 Mon Sep 17 00:00:00 2001
From: kwilk
Date: Mon, 18 Apr 2011 13:34:40 -0700
Subject: feature[ats_NZFDT]: Rule to support conversion of DOORS Word export
documents to OSEE
---
.../jdk/core/test/text/UtfReadingRuleTest.java | 4 -
.../eclipse/osee/framework/jdk/core/text/Rule.java | 6 +
.../jdk/core/text/rules/DoorsToOseeRule.java | 209 +++++++++++++++++++++
.../jdk/core/text/rules/WordMLNewLineMaker.java | 23 ++-
.../jdk/core/util/ReservedCharacters.java | 6 +-
.../osee/framework/jdk/core/util/Strings.java | 11 +-
.../jdk/core/util/io/xml/AbstractSaxHandler.java | 20 +-
.../jdk/core/util/io/xml/ExcelXmlWriter.java | 3 +-
.../skynet/core/importing/ReqNumberingTest.java | 57 +++++-
.../parsers/OutlineResolutionAndNumberTest.java | 21 ++-
.../core/importing/parsers/WordOutlineTest.java | 67 ++++---
.../parsers/numberEmbeddedInTheContent.xml | 2 +-
.../parsers/outlineNameNumberAndContent.xml | 2 +-
.../importing/parsers/outlineNameWithNumber.xml | 2 +-
.../skynet/core/importing/ReqNumbering.java | 54 ++++--
.../skynet/core/importing/RoughArtifact.java | 24 ++-
.../skynet/core/importing/RoughAttributeSet.java | 8 +
.../operations/RoughToRealArtifactOperation.java | 8 +-
.../importing/parsers/ExcelArtifactExtractor.java | 8 +-
.../core/importing/parsers/OutlineResolution.java | 92 +++------
.../parsers/WordOutlineExtractorDelegate.java | 64 +++----
.../resolvers/AttributeBasedArtifactResolver.java | 14 +-
.../test/importer/ArtifactImportWizardTest.java | 9 +-
.../ui/skynet/Import/MatchingStrategy.java | 6 +-
.../framework/ui/skynet/RelationsComposite.java | 11 +-
25 files changed, 487 insertions(+), 244 deletions(-)
create mode 100644 plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/text/rules/DoorsToOseeRule.java
diff --git a/plugins/org.eclipse.osee.framework.jdk.core.test/src/org/eclipse/osee/framework/jdk/core/test/text/UtfReadingRuleTest.java b/plugins/org.eclipse.osee.framework.jdk.core.test/src/org/eclipse/osee/framework/jdk/core/test/text/UtfReadingRuleTest.java
index 66c2c1cec0c..ab23c806991 100644
--- a/plugins/org.eclipse.osee.framework.jdk.core.test/src/org/eclipse/osee/framework/jdk/core/test/text/UtfReadingRuleTest.java
+++ b/plugins/org.eclipse.osee.framework.jdk.core.test/src/org/eclipse/osee/framework/jdk/core/test/text/UtfReadingRuleTest.java
@@ -102,10 +102,6 @@ public final class UtfReadingRuleTest {
private static final class Utf8TestRule extends Rule {
private CharSequence lastOutput;
- public Utf8TestRule() {
- lastOutput = null;
- }
-
@Override
public ChangeSet computeChanges(final CharSequence seq) {
lastOutput = seq;
diff --git a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/text/Rule.java b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/text/Rule.java
index e4030b3c346..ee4c15cad8f 100644
--- a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/text/Rule.java
+++ b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/text/Rule.java
@@ -49,6 +49,12 @@ public abstract class Rule {
this.subdirectoryName = null;
}
+ /**
+ * Implement this to receive the content of the entire file in {@code seq}
+ *
+ * @param seq
+ * @return
+ */
public abstract ChangeSet computeChanges(CharSequence seq);
public final void process(Collection list) {
diff --git a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/text/rules/DoorsToOseeRule.java b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/text/rules/DoorsToOseeRule.java
new file mode 100644
index 00000000000..9566db13737
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/text/rules/DoorsToOseeRule.java
@@ -0,0 +1,209 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.jdk.core.text.rules;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.framework.jdk.core.text.Rule;
+import org.eclipse.osee.framework.jdk.core.text.change.ChangeSet;
+
+/**
+ * Converts Doors exported Word documents to format friendlier to OSEE.
+ *
+ * @author Karol M. Wilk
+ */
+public final class DoorsToOseeRule extends Rule {
+
+ private enum DoorsItemEnum {
+ OBJECT_NUMBER,
+ OBJECT_SHORT_TEXT_DASHED, //will be converted to regular paragraphs
+ OBJECT_SHORT_TEXT_NON_DASHED, //will be deleted
+ OBJECT_BODY,
+ NONE
+ }
+
+ private final Pattern bodyRegex = Pattern.compile("(.*?)", Pattern.DOTALL);
+ private final Pattern paragraphRegex = Pattern.compile("].*?", Pattern.DOTALL);
+ private final Pattern objectNumberParagraphRegex = Pattern.compile(
+ ".*?((?>\\d+\\.)+\\d+-\\d+(?>\\.\\d+-\\d+)*).*", Pattern.DOTALL | Pattern.MULTILINE);
+ private final Pattern regularObjectNumberParagraphRegex = Pattern.compile(
+ ".*?Object Number\\s*.*:\\s+(.*?)", Pattern.DOTALL | Pattern.MULTILINE);
+ private final Pattern objectShortTextParagraphRegex = Pattern.compile(
+ "].*?Object Short Text.*?\\s+:\\s+(.*?).*?", Pattern.DOTALL);
+ private final Pattern headingParagraphRegex = Pattern.compile(
+ "].*?.*?(\\d+\\s+.*?).*?", Pattern.DOTALL);
+
+ private StringBuilder modifiedText;
+
+ public DoorsToOseeRule() {
+ super("_converted.xml");
+ }
+
+ @Override
+ public ChangeSet computeChanges(CharSequence entireFile) {
+ modifiedText = new StringBuilder(entireFile.length() * 2);
+
+ Matcher bodySectionMatcher = bodyRegex.matcher(entireFile);
+ if (bodySectionMatcher.find()) {
+ write(entireFile.subSequence(0, bodySectionMatcher.start()));
+ write("\n");
+
+ processText(bodySectionMatcher.group(1));
+
+ write("\n");
+ write("\n");
+ }
+ return decideOnResult(modifiedText, entireFile);
+ }
+
+ private void processText(CharSequence text) {
+ Matcher paragraphMatcher = paragraphRegex.matcher(text);
+
+ DoorsItemEnum currentDoorsItem = DoorsItemEnum.OBJECT_NUMBER;
+
+ boolean startedSectionProcessing = true;
+ int startIndexOfLastParagraph = -1;
+ int endIndexOfLastParagraph = -1;
+
+ while (paragraphMatcher.find()) {
+
+ if (startedSectionProcessing) {
+ startedSectionProcessing = false;
+ write(text.subSequence(0, paragraphMatcher.start()));
+ } else if (startIndexOfLastParagraph != -1 && endIndexOfLastParagraph != -1) {
+ write(text.subSequence(endIndexOfLastParagraph, paragraphMatcher.start()));
+ }
+
+ DoorsItemEnum prevDoorsItem = currentDoorsItem;
+ currentDoorsItem = processParagraph(paragraphMatcher.group(), currentDoorsItem);
+
+ startIndexOfLastParagraph = paragraphMatcher.start();
+ endIndexOfLastParagraph = paragraphMatcher.end();
+
+ if (prevDoorsItem == currentDoorsItem) {
+ write("\n" + paragraphMatcher.group());
+ }
+ }
+ write(text.subSequence(endIndexOfLastParagraph, text.length()));
+ }
+
+ private DoorsItemEnum processParagraph(String paragraph, DoorsItemEnum nextDoorsItem) {
+ switch (nextDoorsItem) {
+
+ case OBJECT_NUMBER:
+ Matcher objectNumberMatcher = objectNumberParagraphRegex.matcher(paragraph);
+ if (objectNumberMatcher.find()) {
+
+ String updatedObjectNumber = objectNumberMatcher.group(1).replace("-", ".");
+
+ System.out.print("\t" + objectNumberMatcher.group(1) + " --> " + updatedObjectNumber);
+
+ write("\n\t");
+
+ write("");
+ write("");
+ write("");
+
+ write("\n\t");
+ write("");
+ write("");
+ write("");
+ write("");
+ write(String.format("\n%s ", updatedObjectNumber));
+ write("\n\t");
+
+ nextDoorsItem = DoorsItemEnum.OBJECT_SHORT_TEXT_DASHED;
+ } else {
+ //Attempt to remove unnecessary Object Number nodes
+ Matcher regularParagraphMatcher = regularObjectNumberParagraphRegex.matcher(paragraph);
+ if (regularParagraphMatcher.find()) {
+
+ nextDoorsItem = DoorsItemEnum.OBJECT_SHORT_TEXT_NON_DASHED;
+ System.out.print("- \t\t" + regularParagraphMatcher.group(1));
+ }
+ }
+ break;
+
+ case OBJECT_SHORT_TEXT_DASHED: {
+ Matcher objectShortTextMatcher = objectShortTextParagraphRegex.matcher(paragraph);
+ if (objectShortTextMatcher.find()) {
+
+ System.out.print(" " + objectShortTextMatcher.group(1) + "\n");
+
+ write("\n\t");
+ write("\n\t");
+ write("\n\t");
+ write("\n\t");
+ write("\n\t");
+ write("\n\t");
+ write(String.format("\n\t%s", objectShortTextMatcher.group(1)));
+ write("\n\t");
+ write("\n\t");
+
+ nextDoorsItem = DoorsItemEnum.OBJECT_BODY;
+ }
+ }
+ break;
+
+ case OBJECT_SHORT_TEXT_NON_DASHED:
+ Matcher objectShortTextMatcher = objectShortTextParagraphRegex.matcher(paragraph);
+ if (objectShortTextMatcher.find()) {
+
+ System.out.print(" " + objectShortTextMatcher.group(1) + "\n");
+
+ nextDoorsItem = DoorsItemEnum.OBJECT_BODY;
+ }
+ break;
+
+ case OBJECT_BODY:
+ //detect body or heading paragraph that need to be adjusted...
+ Matcher headingParagraphMatcher = headingParagraphRegex.matcher(paragraph);
+ if (headingParagraphMatcher.find()) {
+ System.out.print("\t" + headingParagraphMatcher.group(1));
+
+ write(paragraph.subSequence(0, headingParagraphMatcher.start(1)));
+
+ String wt = headingParagraphMatcher.group(1);
+
+ StringBuilder resultingWt = new StringBuilder(wt.length() * 2 / 3);
+ //Split at " "
+ int indexOfFirstSpace = wt.indexOf(" ");
+
+ resultingWt.append(wt.subSequence(0, indexOfFirstSpace));
+ resultingWt.append(".0");
+ resultingWt.append(wt.subSequence(indexOfFirstSpace, wt.length()));
+
+ System.out.print(" --> " + resultingWt + "\n");
+ write(resultingWt);
+
+ write(paragraph.subSequence(headingParagraphMatcher.end(1), paragraph.length()));
+ } else {
+ write(paragraph);
+ }
+ nextDoorsItem = DoorsItemEnum.OBJECT_NUMBER;
+ break;
+ case NONE:
+ default:
+ break;
+ }
+ return nextDoorsItem;
+ }
+
+ private void write(CharSequence subSequence) {
+ modifiedText.append(subSequence);
+ }
+
+ private ChangeSet decideOnResult(StringBuilder modifiedFile, CharSequence entireFile) {
+ boolean insertModified = modifiedText.length() > 0;
+ setRuleWasApplicable(insertModified);
+ return new ChangeSet((insertModified) ? modifiedText : entireFile);
+ }
+}
diff --git a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/text/rules/WordMLNewLineMaker.java b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/text/rules/WordMLNewLineMaker.java
index ccf6e771e60..3828c2f5ef3 100644
--- a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/text/rules/WordMLNewLineMaker.java
+++ b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/text/rules/WordMLNewLineMaker.java
@@ -16,10 +16,11 @@ import org.eclipse.osee.framework.jdk.core.text.Rule;
import org.eclipse.osee.framework.jdk.core.text.change.ChangeSet;
/**
+ * Processes WordML documents and inserts WordML equivalent new lines. Used in importing tasks. TODO: update methods to
+ * use ChangeSet rather than current logic
+ *
* @see WordMLNewLineMakerTest
* @author Karol M. Wilk
- * @note Rule implements a main(), so start this by passing path to files as argument
- * TODO: update methods to use ChangeSet rather than current logic
*/
public final class WordMLNewLineMaker extends Rule {
@@ -83,17 +84,15 @@ public final class WordMLNewLineMaker extends Rule {
}
}
+ /**
+ * if modifiedText is valid, it will be the changeset, otherwise entirefile
+ *
+ * @return changset representing result
+ */
private ChangeSet decideOnResultAndReturnIt(StringBuilder modifiedFile, CharSequence entireFile) {
- ChangeSet returningChangeSet = null;
- if (modifiedText.length() > 0) {
- // modified text becomes the char sequence
- returningChangeSet = new ChangeSet(modifiedText);
- setRuleWasApplicable(true);
- } else {
- returningChangeSet = new ChangeSet(entireFile);
- setRuleWasApplicable(false);
- }
- return returningChangeSet;
+ boolean insertModified = modifiedText.length() > 0;
+ setRuleWasApplicable(insertModified);
+ return new ChangeSet((insertModified) ? modifiedText : entireFile);
}
private void processWxSubSection(String wxSubSection) {
diff --git a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/ReservedCharacters.java b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/ReservedCharacters.java
index b096db98d38..702504cbc4f 100644
--- a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/ReservedCharacters.java
+++ b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/ReservedCharacters.java
@@ -140,12 +140,12 @@ public final class ReservedCharacters {
}
public static Character toCharacter(String entity) {
- Character toReturn = null;
+ Character character = null;
if (Strings.isValid(entity)) {
entity = entity.trim();
- toReturn = reservedCharacters.get(entity);
+ character = reservedCharacters.get(entity);
}
- return toReturn;
+ return character;
}
public static Collection getChars() {
diff --git a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/Strings.java b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/Strings.java
index a2b3a9f2be5..b58979d6206 100644
--- a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/Strings.java
+++ b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/Strings.java
@@ -52,18 +52,11 @@ public class Strings {
* @return a string with doubled ampersands.
*/
public static String escapeAmpersands(String stringWithAmp) {
- if (isValid(stringWithAmp)) {
- return stringWithAmp.replace("&", "&&");
- } else {
- return null;
- }
+ return isValid(stringWithAmp) ? stringWithAmp.replace("&", "&&") : null;
}
public static String intern(String str) {
- if (str == null) {
- return null;
- }
- return str.intern();
+ return (str == null) ? null : str.intern();
}
/**
diff --git a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/io/xml/AbstractSaxHandler.java b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/io/xml/AbstractSaxHandler.java
index a806df3ee84..3b00d582661 100644
--- a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/io/xml/AbstractSaxHandler.java
+++ b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/io/xml/AbstractSaxHandler.java
@@ -17,9 +17,18 @@ import org.xml.sax.ext.LexicalHandler;
import org.xml.sax.helpers.DefaultHandler;
/**
- * @author Ryan D. Brooks If you want to preserve CDATA sections you need to follow this pattern: XMLReader xmlReader =
- * XMLReaderFactory.createXMLReader(); xmlReader.setContentHandler(this);
- * xmlReader.setProperty("http://xml.org/sax/properties/lexical-handler", this); //This is the important part
+ *
+ * If you want to preserve CDATA sections you need to follow this pattern:
+ *
+ *
+ * XMLReader xmlReader = XMLReaderFactory.createXMLReader();
+ * xmlReader.setContentHandler(this);
+ * xmlReader.setProperty("http://xml.org/sax/properties/lexical-handler", this); //This is the important part
+ *
+ *
+ *
+ *
+ * @author Ryan D. Brooks
*/
public abstract class AbstractSaxHandler extends DefaultHandler implements LexicalHandler {
// Buffer for collecting data from the "characters" SAX event.
@@ -77,6 +86,7 @@ public abstract class AbstractSaxHandler extends DefaultHandler implements Lexic
@Override
public void comment(char[] ch, int start, int length) throws SAXException {
+ //Do nothing
}
@Override
@@ -86,10 +96,12 @@ public abstract class AbstractSaxHandler extends DefaultHandler implements Lexic
@Override
public void endDTD() throws SAXException {
+ //Do nothing
}
@Override
public void endEntity(String name) throws SAXException {
+ //Do nothing
}
@Override
@@ -99,9 +111,11 @@ public abstract class AbstractSaxHandler extends DefaultHandler implements Lexic
@Override
public void startDTD(String name, String publicId, String systemId) throws SAXException {
+ //Do nothing
}
@Override
public void startEntity(String name) throws SAXException {
+ //Do nothing
}
}
\ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/io/xml/ExcelXmlWriter.java b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/io/xml/ExcelXmlWriter.java
index 63ddf8be38f..ea242bb15a1 100644
--- a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/io/xml/ExcelXmlWriter.java
+++ b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/io/xml/ExcelXmlWriter.java
@@ -22,8 +22,7 @@ import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.framework.jdk.core.util.xml.Xml;
/**
- * Test: @link ExcelXmlWriterTest
- *
+ * @see ExcelXmlWriterTest
* @author Ryan D. Brooks
* @author Karol M. Wilk
*/
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/importing/ReqNumberingTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/importing/ReqNumberingTest.java
index b3ea1de45c2..363cb0376a7 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/importing/ReqNumberingTest.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/importing/ReqNumberingTest.java
@@ -21,6 +21,7 @@ import org.junit.Assert;
import org.junit.Test;
/**
+ * @see ReqNumbering
* @author Ryan Schmitt
*/
public class ReqNumberingTest {
@@ -50,6 +51,15 @@ public class ReqNumberingTest {
assertTrue(reqParent.isChild(reqChild));
}
+ @Test
+ public void testIsChild_DoubleZeroBasedParagraphNumber() {
+ String parent = "1.3.4";
+ String child = "1.3.4.0-6.0-1";
+ ReqNumbering reqParent = new ReqNumbering(parent);
+ ReqNumbering reqChild = new ReqNumbering(child);
+ assertTrue(reqParent.isChild(reqChild));
+ }
+
@Test
public void testIsNotChild_ZeroBasedParagraphNumber() {
String parent = "1.3.4";
@@ -68,15 +78,54 @@ public class ReqNumberingTest {
assertFalse(reqChild.isChild(reqParent));
}
+ @Test
+ public void test_isChild_ZeroBasedParagraphNumbers_OddCase() {
+ ReqNumbering A = new ReqNumbering("1.0");
+ ReqNumbering B = new ReqNumbering("1.0-1");
+ assertFalse(B.isChild(A));
+ assertTrue(A.isChild(B));
+ }
+
+ /**
+ *
+ */
+ @Test
+ public void test_compareTo_Transitive() {
+ ReqNumbering A = new ReqNumbering("2.4.6");
+ ReqNumbering B = new ReqNumbering("1.2.3");
+ ReqNumbering C = new ReqNumbering("1.0", false);
+ assertTrue(A.compareTo(B) == 1);
+ assertTrue(B.compareTo(C) == 1);
+ assertTrue(A.compareTo(C) == 1);
+ }
+
@Test
public void testCompare() {
List referenceList =
- Arrays.asList(new ReqNumbering("1"), new ReqNumbering("1.3"), new ReqNumbering("1.3.1.1.1.1.1.1"),
- new ReqNumbering("2.4"), new ReqNumbering("2.4.0.1"), new ReqNumbering("3"));
+ Arrays.asList(new ReqNumbering("1"), new ReqNumbering("1.0-1"), new ReqNumbering("1.3"), new ReqNumbering(
+ "1.3.1.1.1.1.1.1"), new ReqNumbering("2.4"), new ReqNumbering("2.4.0.1"), new ReqNumbering("3"));
List sampleList =
- Arrays.asList(new ReqNumbering("3"), new ReqNumbering("2.4.0-1"), new ReqNumbering("2.4"), new ReqNumbering(
- "1.3.1.1.1.1.1.1"), new ReqNumbering("1.3"), new ReqNumbering("1"));
+ Arrays.asList(new ReqNumbering("3"), new ReqNumbering("1.0-1"), new ReqNumbering("2.4.0-1"), new ReqNumbering(
+ "2.4"), new ReqNumbering("1.3.1.1.1.1.1.1"), new ReqNumbering("1.3"), new ReqNumbering("1"));
Collections.sort(sampleList);
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/importing/parsers/OutlineResolutionAndNumberTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/importing/parsers/OutlineResolutionAndNumberTest.java
index 69c199c399f..021fbdcc751 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/importing/parsers/OutlineResolutionAndNumberTest.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/importing/parsers/OutlineResolutionAndNumberTest.java
@@ -14,17 +14,17 @@ import org.junit.Assert;
import org.junit.Test;
/**
+ * Asserting true in general means GUI should be called for user to make decision; false - opposite
+ *
* @author Karol M. Wilk
*/
public final class OutlineResolutionAndNumberTest {
+ //TODO: change to parameterized type test
+
private static final String LAST_OUTLINE_NUMBER = "3.1.1.2.1.7"; /* realistic outline number */
private final OutlineResolution outlineResolution = new OutlineResolution();
- /**
- * ! Asserting true in general means GUI should be called for user to make decision; false - opposite
- */
-
@Test
public void testLowerOutlineNumbers() {
Assert.assertTrue(outlineResolution.isInvalidOutlineNumber("3.1.1.2.1.6", LAST_OUTLINE_NUMBER));
@@ -36,6 +36,7 @@ public final class OutlineResolutionAndNumberTest {
Assert.assertTrue(outlineResolution.isInvalidOutlineNumber("2.10", LAST_OUTLINE_NUMBER));
Assert.assertTrue(outlineResolution.isInvalidOutlineNumber("2.1", LAST_OUTLINE_NUMBER));
Assert.assertTrue(outlineResolution.isInvalidOutlineNumber("1.8", LAST_OUTLINE_NUMBER));
+ Assert.assertTrue(outlineResolution.isInvalidOutlineNumber("0.15", LAST_OUTLINE_NUMBER));
}
@Test
@@ -48,15 +49,17 @@ public final class OutlineResolutionAndNumberTest {
Assert.assertTrue(outlineResolution.isInvalidOutlineNumber("3.1.1.4.1.1", LAST_OUTLINE_NUMBER));
}
+ @Test
+ public void testZeroBasedOutlineNumbers() {
+ Assert.assertFalse(outlineResolution.isInvalidOutlineNumber("3.2.1.0.1", "3.2.1"));
+ Assert.assertTrue(outlineResolution.isInvalidOutlineNumber("3.2.0.0.1", "3.2.1"));
+ }
+
@Test
public void testRandomOutlineNumbers() {
Assert.assertTrue(outlineResolution.isInvalidOutlineNumber("6.5", LAST_OUTLINE_NUMBER));
Assert.assertTrue(outlineResolution.isInvalidOutlineNumber("0.25", LAST_OUTLINE_NUMBER));
Assert.assertTrue(outlineResolution.isInvalidOutlineNumber("10.48", LAST_OUTLINE_NUMBER));
- Assert.assertTrue(outlineResolution.isInvalidOutlineNumber("-5.6", LAST_OUTLINE_NUMBER));
- Assert.assertTrue(outlineResolution.isInvalidOutlineNumber("34.fin3bbtb34fm34", LAST_OUTLINE_NUMBER));
- Assert.assertFalse(outlineResolution.isInvalidOutlineNumber("", ""));
- Assert.assertFalse(outlineResolution.isInvalidOutlineNumber(null, null));
Assert.assertTrue(outlineResolution.isInvalidOutlineNumber("200.12.3", LAST_OUTLINE_NUMBER));
Assert.assertFalse(outlineResolution.isInvalidOutlineNumber("4.0", "3.1"));
Assert.assertFalse(outlineResolution.isInvalidOutlineNumber("2.1.1.1.2", "2.1.1.1.1"));
@@ -66,7 +69,5 @@ public final class OutlineResolutionAndNumberTest {
Assert.assertFalse(outlineResolution.isInvalidOutlineNumber("2.2", "2.1.1.1.1"));
Assert.assertFalse(outlineResolution.isInvalidOutlineNumber("2.1.2", "2.1.1.1.1"));
Assert.assertTrue(outlineResolution.isInvalidOutlineNumber("3.2", "2.1.1.1.1"));
- Assert.assertTrue(outlineResolution.isInvalidOutlineNumber("b", "c"));
}
-
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/importing/parsers/WordOutlineTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/importing/parsers/WordOutlineTest.java
index 032b6329d7f..baa5aa9822e 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/importing/parsers/WordOutlineTest.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/importing/parsers/WordOutlineTest.java
@@ -17,7 +17,6 @@ import java.util.Collection;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-
import org.eclipse.osee.framework.jdk.core.util.Lib;
import org.eclipse.osee.framework.jdk.core.util.ReservedCharacters;
import org.eclipse.osee.framework.jdk.core.util.Strings;
@@ -54,50 +53,28 @@ public final class WordOutlineTest {
this.expectedData = expectedData;
}
- //@formatter:off
/**
- * Note: some of the data objects need to repeat data
- * from previous test because they are considered to
- * be lastHeaderNumber or lastHeaderName or lastContent
- *
- * @return collection of data sets used as input for parameterized unit test
- */
+ * Note: some of the data objects need to repeat data from previous test because they are considered to be
+ * lastHeaderNumber or lastHeaderName or lastContent
+ *
+ * @return collection of data sets used as input for parameterized unit test
+ */
@Parameters
public static Collection