示例#1
0
        public void Update()
        {
            this.Name        = this.ListObject.Name;
            this.DisplayName = this.Worksheet.Name;

            if (string.IsNullOrWhiteSpace(this.DataName))
            {
                this.Icon               = Properties.Resources.table;
                this.DataDisplayName    = string.Empty;
                this.ListObject.Comment = string.Empty;
            }
            else
            {
                this.Icon = Properties.Resources.table_link;
                Excel.ListObject dataListObject = ListObjectHelper.GetByName(this.Workbook, this.DataName);

                if (null != dataListObject)
                {
                    this.DataDisplayName = ListObjectHelper.GetWorksheetName(dataListObject);
                }
                else
                {
                    this.DataDisplayName = string.Empty;
                }
            }
        }
        public void Update()
        {
#if DEBUG
            Log.Logger.DebugFormat("WorkbookContext.Update");
#endif
            var newest = new Dictionary <string, TestCase>();

            foreach (Excel.Worksheet worksheet in this.Workbook.Worksheets)
            {
                Excel.ListObject listObject = ListObjectHelper.GetTestCases(worksheet).FirstOrDefault();

                if (null == listObject)
                {
                    continue;
                }

                TestCase testCase;
                string   key = listObject.Name;

                if (this.oldest.ContainsKey(key))
                {
                    testCase = this.oldest[key];
                    testCase.Update();
                }
                else
                {
                    testCase = new TestCase(this.Workbook, worksheet, listObject);
                }

                newest.Add(key, testCase);
            }

            var s1 = string.Join(",", this.oldest.Keys);
            var s2 = string.Join(",", newest.Keys);

            this.oldest = newest;

            if (s1 == s2)
            {
                return;
            }

            try
            {
                this.TestCases.RaiseListChangedEvents = false;
                this.TestCases.Clear();

                foreach (var testCase in newest.Values)
                {
                    this.TestCases.Add(testCase);
                }
            }
            finally
            {
                this.TestCases.RaiseListChangedEvents = true;
                this.TestCases.ResetBindings();
            }
        }
示例#3
0
        private void recorder_CommandRecording(object sender, Recorder.CommandRecorderEventArgs e)
        {
            var testCase = this.GetActiveWorkbookContext().GetActiveTestCase();

            Excel.ListObject listObject = testCase.ListObject;
            Excel.ListRow    listRow    = ListObjectHelper.GetEmptyRow(listObject);
            ListRowHelper.Set(listRow, ListRowHelper.ColumnIndex.Command, e.Command);
            ListRowHelper.Set(listRow, ListRowHelper.ColumnIndex.Target, e.Target);
            ListRowHelper.Set(listRow, ListRowHelper.ColumnIndex.Value, e.Value);
        }
        public void DeleteEvidenceAll()
        {
            DisableScreenUpdating.Invoke(() =>
            {
                foreach (var testCase in this.TestCases)
                {
                    testCase.Result = TestResult.None;
                }

                List <Excel.Worksheet> deleteTargetWorksheets = new List <Excel.Worksheet>();

                foreach (Excel.Worksheet worksheet in this.Workbook.Worksheets)
                {
                    if (null != ExcelWorksheetCustomPropertyAccessor.Get(worksheet, EVIDENCE_PROPERTY))
                    {
                        deleteTargetWorksheets.Add(worksheet);
                    }
                    else
                    {
                        Excel.ListObject listObject = ListObjectHelper.GetTestCases(worksheet).FirstOrDefault();

                        if (null != listObject)
                        {
                            listObject.DataBodyRange.Columns[ListRowHelper.ColumnIndex.Result].Clear();
                            listObject.DataBodyRange.Columns[ListRowHelper.ColumnIndex.Error].Clear();
                            listObject.DataBodyRange.Columns[ListRowHelper.ColumnIndex.Evidence].Clear();
                        }
                    }
                }

                DisableDisplayAlert.Invoke(() =>
                {
                    foreach (Excel.Worksheet worksheet in deleteTargetWorksheets)
                    {
                        worksheet.Delete();
                    }
                });
            });
        }
        public static Excel.ListRow GetEmptyRow(Excel.ListObject listObject)
        {
            Excel.ListRow theListRow = null;

            ForEach(listObject, (listRow) =>
            {
                var s = ListRowHelper.Get(listRow, ListRowHelper.ColumnIndex.Command);
                if (string.IsNullOrWhiteSpace(s))
                {
                    theListRow = listRow;
                    return(false);
                }

                return(true);
            });

            if (null != theListRow)
            {
                return(theListRow);
            }

            return(ListObjectHelper.AddRow(listObject, true));
        }
示例#6
0
        private TestDataSequence GetTestDataSequence(ITestCase testCase)
        {
            var dataSequence = new TestDataSequence();

            if (string.IsNullOrWhiteSpace(testCase.DataName))
            {
                var dummyData = new TestData();
                dataSequence.Enqueue(dummyData);
                return(dataSequence);
            }

            Excel.ListObject listObject = ListObjectHelper.GetByName(testCase.Workbook, testCase.DataName);

            if (null == listObject)
            {
                throw new InvalidOperationException("listObject is null.");
            }

            ListObjectHelper.ForEach(
                listObject,
                (listRow) =>
            {
                var data = new TestData();

                foreach (Excel.ListColumn listColumn in listObject.ListColumns)
                {
                    var value = ListRowHelper.Get(listRow, listColumn.Index);
                    data.Add(listColumn.Name, value);
                }

                dataSequence.Enqueue(data);
                return(true);
            });

            return(dataSequence);
        }
示例#7
0
        public TestSequence Compile(IEnumerable <TestCase> testCases)
        {
            if (null == testCases)
            {
                throw new ArgumentNullException("testCases");
            }
#if DEBUG
            Stopwatch sw = new Stopwatch();
            sw.Start();
#endif
            var testSequence = new TestSequence();
            int index        = 0;

            foreach (var testCase in testCases.Where(i => i.IsChecked))
            {
                Excel.ListObject listObject = testCase.ListObject;
                var dataSequence            = this.GetTestDataSequence(testCase);

                foreach (var data in dataSequence)
                {
                    var steps = new TestStepCollection(testCase);
                    testSequence.Enqueue(steps);

                    ListObjectHelper.ForEach(
                        listObject,
                        (listRow) =>
                    {
                        try
                        {
                            var step = this.CompileFromListRow(
                                testCase.Workbook,
                                testCase.Worksheet,
                                listObject,
                                listRow,
                                data);

                            if (null != step)
                            {
                                step.TestCase = testCase;
                                step.Index    = index++;
                                steps.Enqueue(step);
                            }
                        }
                        catch (Exception ex)
                        {
                            Log.Logger.Warn(ex);
                            testSequence.CompileErrorCount++;
                            testCase.Result = TestResult.Failed;
                        }

                        return(true);
                    });
                }
            }

#if DEBUG
            sw.Stop();
            Log.Logger.Debug(testSequence.ToString());
            Log.Logger.DebugFormat("Elapsed = {0}", sw.Elapsed);
#endif

            return(testSequence);
        }