public void Should_find_no_difference_between_original_Scrum_project_and_Agile_project_converted_to_Scrum() { PrepareTestEnvironment.ResetCollectionOnce(); TfsConnection.ClientSettingsDirectory = Path.Combine(TestContext.TestRunResultsDirectory, "TfsClient"); var factory = new ProcessTemplateFactory(); var unconverted = factory.FromActiveTeamProject(TestCollectionUri, "Agile-6.1"); var goal = factory.FromActiveTeamProject(TestCollectionUri, "Scrum-2.1"); var agileToScrumDiffEngine = new DiffEngine(ProcessTemplateMaps.Agile61ToScrum21()); var initialDifferences = agileToScrumDiffEngine.CompareProcessTemplates(unconverted, goal); var morphEngine = new MorphEngine(); var actions = morphEngine.GenerateActions(initialDifferences); morphEngine.Apply(TestCollectionUri, "Agile-6.1", actions, TestContext.TestRunResultsDirectory); var emptyMapDiffEngine = new DiffEngine(ProcessTemplateMap.Empty()); var converted = factory.FromActiveTeamProject(TestCollectionUri, "Agile-6.1"); var finalDifferences = emptyMapDiffEngine.CompareProcessTemplates(converted, goal); var reportBuilder = new ReportBuilder(); var report = reportBuilder.WriteDifferencesToXml(finalDifferences); report.Save(Path.Combine(TestContext.TestRunResultsDirectory, TestContext.TestName + ".xml")); Assert.AreEqual(0, finalDifferences.Count(), "Should be zero differences between new Scrum 2.1 project and the converted Agile 6.1 project."); }
static void Main(string[] args) { if (args.Length != 3) { System.Console.WriteLine("usage: {0} <collection uri> <project name to morph> <project name to use as template>", Process.GetCurrentProcess().ProcessName); return; } var collectionUri = new Uri(args[0]); var projectName = args[1]; var templateProjectName = args[2]; var factory = new ProcessTemplateFactory(); var currentTemplate = factory.FromActiveTeamProject(collectionUri, projectName); var goalTemplate = factory.FromActiveTeamProject(collectionUri, templateProjectName); // TODO test for project property showing process template used and update after conversion var diffEngine = new DiffEngine(ProcessTemplateMap.ConvertScrum2ToAgile6()); var differences = diffEngine.CompareProcessTemplates(currentTemplate, goalTemplate); var engine = new MorphEngine(); var actions = engine.GenerateActions(differences); foreach (var action in actions) { System.Console.WriteLine(action.ToString()); } //var filteredActions = actions.Where(a => !(a is DestroyWitdMorphAction)); // TODO optionally skip deleting extra work item items engine.Apply(collectionUri, projectName, actions, Path.GetTempPath()); //TODO replace temp path with something useful }
public void SetEngines(MorphEngine engine) { if (engine != null) { m_EngineRu = engine; m_EngineEn = engine; m_EngineUa = engine; m_EngineBy = engine; } }
internal void DeserializeLazy(ByteArrayWrapper str, MorphEngine me, ref int pos) { this._deserializeBase(str, ref pos); int cou = str.DeserializeShort(ref pos); if (cou > 0) { Nodes = new Dictionary <short, MorphTreeNode>(); for (; cou > 0; cou--) { int i = str.DeserializeShort(ref pos); int pp = str.DeserializeInt(ref pos); MorphTreeNode child = new MorphTreeNode(); child.LazyPos = pos; Nodes.Add((short)i, child); pos = pp; } } int p = pos; if (RuleIds != null) { foreach (int rid in RuleIds) { MorphRule r = me.GetMutRule(rid); if (r.LazyPos > 0) { pos = r.LazyPos; r.Deserialize(str, ref pos); r.LazyPos = 0; } } pos = p; } if (ReverceVariants != null) { foreach (MorphRuleVariantRef rv in ReverceVariants) { MorphRule r = me.GetMutRule(rv.RuleId); if (r.LazyPos > 0) { pos = r.LazyPos; r.Deserialize(str, ref pos); r.LazyPos = 0; } } pos = p; } }
protected static List<MorphAction> GenerateActionsViaDiffEngine() { if (_actionsViaDiffEngine != null) return _actionsViaDiffEngine; using (var agileTemplate = EmbeddedProcessTemplate.Agile6()) using (var scrumTemplate = EmbeddedProcessTemplate.Scrum2()) { var agileReader = new ProcessTemplateReader(agileTemplate.TemplatePath); var scrumReader = new ProcessTemplateReader(scrumTemplate.TemplatePath); var processTemplateMap = ProcessTemplateMap.ConvertScrum2ToAgile6(); var currentProcessTemplate = new ProcessTemplate {WorkItemTypeDefinitions = new ReadOnlyCollection<WorkItemTypeDefinition>(scrumReader.WorkItemTypeDefinitions.ToArray())}; var goalProcessTemplate = new ProcessTemplate {WorkItemTypeDefinitions = new ReadOnlyCollection<WorkItemTypeDefinition>(agileReader.WorkItemTypeDefinitions.ToArray())}; var diffEngine = new DiffEngine(processTemplateMap); var differences = diffEngine.CompareProcessTemplates(currentProcessTemplate, goalProcessTemplate); var morphEngine = new MorphEngine(); _actionsViaDiffEngine = morphEngine.GenerateActions(differences).ToList(); } return _actionsViaDiffEngine; }
internal void UnloadLanguages(Pullenti.Morph.MorphLang langs) { if (langs.IsRu && m_EngineRu.Language.IsRu) { m_EngineRu = new MorphEngine(); } if (langs.IsEn && m_EngineEn.Language.IsEn) { m_EngineEn = new MorphEngine(); } if (langs.IsUa && m_EngineUa.Language.IsUa) { m_EngineUa = new MorphEngine(); } if (langs.IsBy && m_EngineBy.Language.IsBy) { m_EngineBy = new MorphEngine(); } if (langs.IsKz && m_EngineKz.Language.IsKz) { m_EngineKz = new MorphEngine(); } GC.Collect(); }
private void GenerateActions() { SetupDifferences(); var morphEngine = new MorphEngine(); _actions = morphEngine.GenerateActions(_differences); }