public void Sequence() { const string Expected = @"<seq range=""IL_0000 (22)""> <il range=""IL_0000 (2)"" /> <try range=""IL_0002 (8)""> <try.block> <il range=""IL_0002 (4)"" /> </try.block> <handler type=""Clause"" exception=""02000010""> <il range=""IL_0006 (4)"" /> </handler> </try> <il range=""IL_000A (2)"" /> <try range=""IL_000C (8)""> <try.block> <il range=""IL_000C (4)"" /> </try.block> <handler type=""Clause"" exception=""02000010""> <il range=""IL_0010 (4)"" /> </handler> </try> <il range=""IL_0014 (2)"" /> </seq>"; var handlers = new[] { new ExceptionHandler(ExceptionHandlingClauseOptions.Clause, new ILRange(2, 4), new ILRange(6, 4), 0x02000010), new ExceptionHandler(ExceptionHandlingClauseOptions.Clause, new ILRange(12, 4), new ILRange(16, 4), 0x02000010), }; var section = SectionFactory.Create(new ILRange(0, 22), handlers); Assert.That(Format(section), Is.EqualTo(Expected)); }
static BaseSection?BuildSections(MethodData data) { var ilRange = InstructionsRange(data.Instructions); BaseSection?sections = null; foreach (var dataSection in data.DataSections) { if (dataSection.ExceptionHandlers.Length > 0) { if (sections != null) { return(null); } try { sections = SectionFactory.Create(ilRange, dataSection.ExceptionHandlers); } catch (CannotGenerateSectionException) { return(null); } } } return(sections); }
public void NestedSequence() { const string Expected = @"<try range=""IL_0000 (10)""> <try.block> <seq range=""IL_0000 (8)""> <il range=""IL_0000 (2)"" /> <try range=""IL_0002 (4)""> <try.block> <il range=""IL_0002 (2)"" /> </try.block> <handler type=""Clause"" exception=""02000010""> <il range=""IL_0004 (2)"" /> </handler> </try> <il range=""IL_0006 (2)"" /> </seq> </try.block> <handler type=""Finally""> <il range=""IL_0008 (2)"" /> </handler> </try>"; var handlers = new[] { new ExceptionHandler(ExceptionHandlingClauseOptions.Clause, new ILRange(2, 2), new ILRange(4, 2), 0x02000010), new ExceptionHandler(ExceptionHandlingClauseOptions.Finally, new ILRange(0, 8), new ILRange(8, 2), 0), }; var section = SectionFactory.Create(new ILRange(0, 10), handlers); Assert.That(Format(section), Is.EqualTo(Expected)); }
public void OverlappingTry() { const string Expected = @"<try range=""IL_0000 (10)""> <try.block> <il range=""IL_0000 (2)"" /> </try.block> <handler type=""Clause"" exception=""02000011""> <il range=""IL_0002 (4)"" /> </handler> <handler type=""Clause"" exception=""02000012""> <il range=""IL_0006 (4)"" /> </handler> </try>"; var handlers = new[] { new ExceptionHandler(ExceptionHandlingClauseOptions.Clause, new ILRange(0, 2), new ILRange(2, 4), 0x02000011), new ExceptionHandler(ExceptionHandlingClauseOptions.Clause, new ILRange(0, 2), new ILRange(6, 4), 0x02000012), }; var section = SectionFactory.Create(new ILRange(0, 10), handlers); Assert.That(Format(section), Is.EqualTo(Expected)); }
public void Create_Always_WillCreateASectionWithName() { var sectionFactory = new SectionFactory(new QuestionFactory()); Base section = sectionFactory.Create(new StringReader("Sec1 0")); Assert.IsInstanceOf(typeof(Section), section); Assert.AreEqual("Sec1", section.Name); }
public void Create_Always_WillCreateASectionWithName() { var sectionFactory = new SectionFactory(new QuestionFactory()); Base section = sectionFactory.Create(new StringReader("Section 0")); Assert.AreEqual("Section", section.Name); }
public void Create_WhenSectionHAsQuestions_WillReturnASectionWithAListOfQuestions() { var sectionFactory = new SectionFactory(); var section = sectionFactory.Create(new StringReader(@"Section 1 Q1 Name")); // Assert.AreEqual(1, section.); }
public void Empty() { const string Expected = @"<il range=""IL_0000 (10)"" />"; var section = SectionFactory.Create(new ILRange(0, 10), Array.Empty <ExceptionHandler>()); Assert.That(Format(section), Is.EqualTo(Expected)); }
public void CreateSection_Always_WillReturnASectionWithName() { var mock = new Mock <IQuestionFactory>(); var sectionFactory = new SectionFactory(mock.Object); Base item = sectionFactory.Create(new StringReader("Section 0")); Assert.IsInstanceOf(typeof(Section), item); }
public void Create_WhenItemHasChildren_WillSetTheLIstOfItems() { var sectionFactory = new SectionFactory(new QuestionFactory()); Base section = sectionFactory.Create(new StringReader(@"Section 1 Q1 Name")); Assert.AreEqual(1, section.Items.Count); }
public void Method_scenario_behaviour() { var sectionFactory = new SectionFactory(); Base section = sectionFactory.Create(new StringReader(@"Sec1 1 SC Sex 2 Female Male")); Assert.AreEqual(1, section.Items.Count); }
public void Create_WhenSectionHasQuestions_WillPopulateTheListOfItems() { var mockQuestion = new Mock <IQuestionFactory>(); var sectionFactory = new SectionFactory(mockQuestion.Object); Base section = sectionFactory.Create(new StringReader(@"Sec1 1 FT Name")); Assert.AreEqual(1, section.Items.Count); }
public void Create_WhenSectionContainsQuestions_WillSetTheListOfItems() { var sectionFactory = new SectionFactory(new QuestionFactory()); var section = sectionFactory.Create(new StringReader(@"Sec1 1 Q1 Name")); Assert.AreEqual(1, section.Items.Count); }
public void Create_WhenSectionHasQuestions_WillSetTheListOfItems() { var mockQuestionFactory = new Mock <IQuestionFactory>(); var sectionFactory = new SectionFactory(mockQuestionFactory.Object); Base section = sectionFactory.Create(new StringReader(@"Sec1 2 FT Nume FT Prenume")); Assert.AreEqual(2, section.Items.Count); }
public void Finally() { const string Expected = @"<try range=""IL_0000 (10)""> <try.block> <il range=""IL_0000 (6)"" /> </try.block> <handler type=""Finally""> <il range=""IL_0006 (4)"" /> </handler> </try>"; var handlers = new[] { new ExceptionHandler(ExceptionHandlingClauseOptions.Finally, new ILRange(0, 6), new ILRange(6, 4), 0), }; var section = SectionFactory.Create(new ILRange(0, 10), handlers); Assert.That(Format(section), Is.EqualTo(Expected)); }
public void Nested() { const string Expected = @"<try range=""IL_0000 (20)""> <try.block> <try range=""IL_0000 (10)""> <try.block> <il range=""IL_0000 (5)"" /> </try.block> <handler type=""Clause"" exception=""02000010""> <il range=""IL_0005 (5)"" /> </handler> </try> </try.block> <handler type=""Finally""> <try range=""IL_000A (10)""> <try.block> <il range=""IL_000A (5)"" /> </try.block> <handler type=""Clause"" exception=""02000010""> <il range=""IL_000F (5)"" /> </handler> </try> </handler> </try>"; var handlers = new[] { new ExceptionHandler(ExceptionHandlingClauseOptions.Clause, new ILRange(0, 5), new ILRange(5, 5), 0x02000010), new ExceptionHandler(ExceptionHandlingClauseOptions.Clause, new ILRange(10, 5), new ILRange(15, 5), 0x02000010), new ExceptionHandler(ExceptionHandlingClauseOptions.Finally, new ILRange(0, 10), new ILRange(10, 10), 0), }; var section = SectionFactory.Create(new ILRange(0, 20), handlers); Assert.That(Format(section), Is.EqualTo(Expected)); }
public void Filter() { const string Expected = @"<try range=""IL_0000 (12)""> <try.block> <il range=""IL_0000 (3)"" /> </try.block> <handler type=""Filter""> <filter> <il range=""IL_0003 (4)"" /> </filter> <il range=""IL_0007 (5)"" /> </handler> </try>"; var handlers = new[] { new ExceptionHandler(ExceptionHandlingClauseOptions.Filter, new ILRange(0, 3), new ILRange(7, 5), 3), }; var section = SectionFactory.Create(new ILRange(0, 12), handlers); Assert.That(Format(section), Is.EqualTo(Expected)); }
public void InvalidHandlerConfigurations(ExceptionHandler[] handlers) { Assert.That( () => SectionFactory.Create(new ILRange(0, 10), handlers), Throws.InstanceOf <CannotGenerateSectionException>()); }