nunitasp-devl Mailing List for NUnitAsp (Page 6)
Brought to you by:
jlittle82
You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
(3) |
Apr
(26) |
May
(7) |
Jun
(6) |
Jul
(7) |
Aug
(39) |
Sep
(15) |
Oct
(30) |
Nov
(20) |
Dec
(13) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(28) |
Feb
(15) |
Mar
(41) |
Apr
(51) |
May
(32) |
Jun
(5) |
Jul
(14) |
Aug
(19) |
Sep
(33) |
Oct
(30) |
Nov
(35) |
Dec
(95) |
2004 |
Jan
(5) |
Feb
(3) |
Mar
(15) |
Apr
(24) |
May
(9) |
Jun
(9) |
Jul
(8) |
Aug
(32) |
Sep
(15) |
Oct
(6) |
Nov
(22) |
Dec
(1) |
2005 |
Jan
(22) |
Feb
(9) |
Mar
(2) |
Apr
(33) |
May
(3) |
Jun
(2) |
Jul
(7) |
Aug
(24) |
Sep
(8) |
Oct
(2) |
Nov
(2) |
Dec
|
2006 |
Jan
(2) |
Feb
(2) |
Mar
(5) |
Apr
(2) |
May
(3) |
Jun
(2) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2007 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
From: Jim S. <js...@ti...> - 2005-01-25 00:13:21
|
I'm inclined to decouple NUnitAsp from NUnit entirely. This means eliminating WebFormTestCase, which would require people to instatiate Browser and CurrentWebForm themselves. This makes things a little harder on the programmer, but it gives her more flexibility. It also makes NUnitAsp a little less "magical." The biggest benefit, though, is that it eliminates the need for us to release new versions of NUnitAsp every time a new version of NUnit comes out. We'd also be compatible with MbUnit. The major downside is that this approach is definitely not backwards compatible! I'm going to start experimenting and see what happens. Jim Levi Khatskevitch wrote: > FYI: The latest version of NUnitForms project > (http://nunitforms.sourceforge.net/) provides several versions of the > base test fixture class to let users choose between newer NUnit 2.2 > assertion style and the backward compatible one. This may be a good > example. > > - Levi > > ----- Original Message ----- From: "Peijen Lin" <pei...@gm...> > To: "Jim Shore" <js...@ti...> > Cc: <NUn...@li...> > Sent: Saturday, January 22, 2005 6:18 PM > Subject: Re: [NUnitAsp-devl] NUnit 2.2 update > > >> I believe it does break tests written with prior version of NUnitAsp, >> mainly because WebFormTestCase no long derive from WebAssertion. You >> could probably avoid this by inherit WebAssertion, but you will have >> to fix WebAssertion to work with NUnit 2.2. >> >> Peijen >> >> On Sat, 22 Jan 2005 13:04:54 -0800, Jim Shore >> <js...@ti...> wrote: >> >>> Peijen Lin, >>> >>> This is an impressive set of changes! Thank you. I'll take a detailed >>> look at them next week. >>> >>> One thing that puzzles me is backwards compatibility: will these >>> changes >>> be compatible with tests written with prior versions of NUnitAsp? >>> >>> Jim >> >> >> >> ------------------------------------------------------- >> This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting >> Tool for open source databases. Create drag-&-drop reports. Save time >> by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. >> Download a FREE copy at http://www.intelliview.com/go/osdn_nl >> _______________________________________________ >> NUnitAsp-devl mailing list >> NUn...@li... >> https://lists.sourceforge.net/lists/listinfo/nunitasp-devl >> -- Jim Shore Titanium I.T. LLC - Making IT Profitable I coach XP and Lean Development. Now available in Portland, Ore. phone: 503-267-5490 email: js...@ti... |
From: Peijen L. <pei...@gm...> - 2005-01-22 23:18:35
|
I believe it does break tests written with prior version of NUnitAsp, mainly because WebFormTestCase no long derive from WebAssertion. You could probably avoid this by inherit WebAssertion, but you will have to fix WebAssertion to work with NUnit 2.2. Peijen On Sat, 22 Jan 2005 13:04:54 -0800, Jim Shore <js...@ti...> wrote: > Peijen Lin, > > This is an impressive set of changes! Thank you. I'll take a detailed > look at them next week. > > One thing that puzzles me is backwards compatibility: will these changes > be compatible with tests written with prior versions of NUnitAsp? > > Jim |
From: Jim S. <js...@ti...> - 2005-01-22 21:06:34
|
That does seem odd. This looks like it should fail to me as well. (And actually, it's an odd test in general.) Can you submit this as a bug to SourceForge? Jim Peijen Lin wrote: > I assume the intention is for the following test to fail, but it > passed instead. Maybe it's suppose to pass, maybe not. > > [Test] > public void TestIgnoreOrder() > { > string[] abc = {"a", "b", "c"}; > string[] def = {"d", "e", "f"}; > > string[][] a = new string[2][]; > string[][] b = new string[2][]; > > a[0] = abc; > a[1] = def; > > b[0] = abc; > b[1] = abc; > > WebAssert.AreEqualIgnoreOrder(a, b); > } > > > ------------------------------------------------------- > This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting > Tool for open source databases. Create drag-&-drop reports. Save time > by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. > Download a FREE copy at http://www.intelliview.com/go/osdn_nl > _______________________________________________ > NUnitAsp-devl mailing list > NUn...@li... > https://lists.sourceforge.net/lists/listinfo/nunitasp-devl -- Jim Shore Titanium I.T. LLC - Making IT Profitable I coach XP and Lean Development. Now available in Portland, Ore. phone: 503-267-5490 email: js...@ti... |
From: Jim S. <js...@ti...> - 2005-01-22 21:05:06
|
Peijen Lin, This is an impressive set of changes! Thank you. I'll take a detailed look at them next week. One thing that puzzles me is backwards compatibility: will these changes be compatible with tests written with prior versions of NUnitAsp? Jim Peijen Lin wrote: > Here are some changes I made to the following files for NUnitAsp to > compile without warning for NUnit 2.2 (using VS.NET 2003). I tried to > find a copy of NUnitAsp that works with NUnit 2.2 and compile with > .Net 1.1, but I couldn't find it. Let me know if someone has already > done this, so I can discard this change and use the official release > instead. > > I tried to create patch files for these changes, but because of > newline difference between platforms there is really no point. I > included the cs files instead. > > - WebAssert.cs > A new class WebAssert is created to replace WebAssertion. This class > doen't derive from Assertion. > All Assertion method calls has been changed to use Assert.Whatever. > Method names have been changed to match NUnit 2.2 Assert class. > Method parameter orders have been changed to match NUnit 2.2 > String array AssertionEquals functions have been removed since NUnit > 2.2 supplies AreEqual methods for arrays. > Minor optimization to AreEqualIgnoreOrder (I noticed a bug in this > function, but I didn't fix it) > Removed helper functions not in use > > - WebFormTestCase.cs > Doesn't derive from WebAssertion anymore. > All Assertion method calls has been changed to use Assert.Whatever. > > - AspTester/DataGridTester.cs > All Assertion method calls has been changed to use Assert.Whatever. > > I didn't run unit test for these changes because I don't have a > webserver running. > > Feedback are welcome. > > Peijen Lin > > Copyright stuff > I assign the copyright to these files to Brian Knowles and Jim Shore. > > > ------------------------------------------------------------------------ > > #region Copyright (c) 2002-2004 by Brian Knowles and Jim Shore > /******************************************************************************************************************** > ' > ' Copyright (c) 2002-2004 by Brian Knowles and Jim Shore > ' > ' Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated > ' documentation files (the "Software"), to deal in the Software without restriction, including without limitation > ' the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and > ' to permit persons to whom the Software is furnished to do so, subject to the following conditions: > ' > ' The above copyright notice and this permission notice shall be included in all copies or substantial portions > ' of the Software. > ' > ' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO > ' THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE > ' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF > ' CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER > ' DEALINGS IN THE SOFTWARE. > ' > '******************************************************************************************************************/ > #endregion > > using System; > using NUnit.Framework; > using System.Globalization; > > namespace NUnit.Extensions.Asp > { > /// <summary> > /// The data type of a column (use with AssertSortOrder) > /// </summary> > public enum DataType {String, DateTime, Int}; > > /// <summary> > /// Assertions specific to NUnitAsp's web testers. > /// </summary> > public class WebAssert > { > /// <summary> > /// Asserts that a specific control is on the current web page, with the "Visible" > /// parameter set to "true." This method does not assert that the control is actually > /// visible to the user. > /// </summary> > public static void IsVisible(ControlTester tester) > { > Assert.IsTrue(tester.Visible, > "{0} control should be visible (HTML ID: {1}; ASP location: {2})", > tester.AspId, tester.HtmlId, tester.Description); > } > > /// <summary> > /// Asserts that a specific control is on the current web page, with the "Visible" > /// parameter set to "false." This method does not assert that the control is actually > /// visible to the user. > /// </summary> > public static void IsNotVisible(ControlTester tester) > { > Assert.IsFalse(tester.Visible, > "{0} control should not be visible (HTML ID: {1}; ASP location: {2})", > tester.AspId, tester.HtmlId, tester.Description); > } > > /// <summary> > /// Asserts that two "tables" of strings are identical, but permits ordering > /// differences. Individual rows in the tables must match, but the order of the > /// rows may differ. > /// </summary> > [CLSCompliant(false)] > public static void AreEqualIgnoreOrder(string[][] expected, string[][] actual) > { > AreEqualIgnoreOrder(expected, actual, ""); > } > > /// <summary> > /// Asserts that two "tables" of strings are identical, but permits ordering > /// differences. Individual rows in the tables must match, but the order of the > /// rows may differ. > /// </summary> > [CLSCompliant(false)] > public static void AreEqualIgnoreOrder(string[][] expected, string[][] actual, string message, params object[] args) > { > message = String.Format(message, args); > AreEqualIgnoreOrder(expected, actual, message); > } > > /// <summary> > /// Asserts that two "tables" of strings are identical, but permits ordering > /// differences. Individual rows in the tables must match, but the order of the > /// rows may differ. > /// </summary> > [CLSCompliant(false)] > public static void AreEqualIgnoreOrder(string[][] expected, string[][] actual, string message) > { > if (expected.Length != actual.Length) Fail(message, expected, actual); > > string[] flattenExpected = new string[expected.Length]; > string[] flattenActual = new string[actual.Length]; > > for (int i = 0; i < flattenExpected.Length; ++i) > { > flattenExpected[i] = Flatten(expected[i]); > } > > for (int i = 0; i < flattenActual.Length; ++i) > { > flattenActual[i] = Flatten(actual[i]); > } > > foreach (string actualRow in flattenActual) > { > AssertTableContainsRow(flattenExpected, actualRow, expected, actual, message); > } > } > > private static void AssertTableContainsRow(string[] flattenExpected, string actualRow, string[][] expected, string[][] actual, string message) > { > foreach (string expectedRow in flattenExpected) > { > if (expectedRow == actualRow) return; > } > Fail(message, expected, actual); > } > > private static void Fail(string message, string[] expected, string[] actual) > { > message += "\r\nexpected: " + RenderArray(expected); > message += "\r\n but was: " + RenderArray(actual); > Assert.Fail(message); > } > > private static string RenderArray(string[] array) > { > if (array == null) return "<null>"; > if (array.Length == 0) return "{}"; > > return "{\"" + string.Join("\", \"", array) + "\"}"; > } > > private static void Fail(string message, string[][] expected, string[][] actual) > { > message += "\r\nexpected: " + RenderDoubleArray(expected); > message += "\r\n but was: " + RenderDoubleArray(actual); > Assert.Fail(message); > } > > private static string RenderDoubleArray(string[][] doubleArray) > { > if (doubleArray == null) return "<null>"; > if (doubleArray.Length == 0) return "{}"; > > string result = "\r\n {"; > foreach (string[] array in doubleArray) > { > result += "\r\n " + RenderArray(array); > } > return result + "\r\n }"; > } > > private static string Flatten(string[] a) > { > if (a == null) return "null"; > > System.Text.StringBuilder result = new System.Text.StringBuilder("{"); > foreach (string element in a) > { > result.AppendFormat("<{0}>", element); > } > result.Append("}"); > return result.ToString(); > } > > private static string Flatten(string[][] a) > { > if (a == null) return "null"; > > System.Text.StringBuilder result = new System.Text.StringBuilder("{"); > foreach (string[] element in a) > { > result.AppendFormat("\r\n {0}", Flatten(element)); > } > result.Append("\r\n}"); > return result.ToString(); > } > > /// <summary> > /// Asserts that the "rows" in a "table" of strings are sorted. > /// </summary> > /// <param name="data">The table to check.</param> > /// <param name="column">The column that must be sorted.</param> > /// <param name="isAscending">'true' if the table should be sorted from low to high; 'false' if the table should be sorted from high to low.</param> > /// <param name="type">The type of data in the column that's sorted.</param> > [CLSCompliant(false)] > public static void IsSorted(string[][] data, int column, bool isAscending, DataType type) > { > IsSorted(data, column, isAscending, type, ""); > } > > /// <summary> > /// Asserts that the "rows" in a "table" of strings are sorted. > /// </summary> > /// <param name="data">The table to check.</param> > /// <param name="column">The column that must be sorted.</param> > /// <param name="isAscending">'true' if the table should be sorted from low to high; 'false' if the table should be sorted from high to low.</param> > /// <param name="type">The type of data in the column that's sorted.</param> > /// <param name="message">A noun to display if the assertion fails.</param> > [CLSCompliant(false)] > public static void IsSorted(string[][] data, int column, bool isAscending, DataType type, string message) > { > string lastCell = null; > foreach (string[] row in data) > { > string cell = row[column]; > if (lastCell == null) > { > lastCell = cell; > continue; > } > > bool sorted; > string orderName; > int comparison = Compare(cell, lastCell, type); > if (isAscending) > { > sorted = comparison >= 0; > orderName = "ascending"; > } > else > { > sorted = comparison <= 0; > orderName = "descending"; > } > if (!sorted) Assert.Fail("{0} should be sorted {1}. Was: {2}", message, orderName, Flatten(data)); > lastCell = cell; > } > } > > private static int Compare(string a, string b, DataType type) > { > if (a == "" && b == "") return 0; > if (a == "") return -1; > if (b == "") return 1; > > switch (type) > { > case DataType.String: > return a.CompareTo(b); > case DataType.Int: > if (a == "" && b == "") return 0; > int aInt = int.Parse(a); > int bInt = int.Parse(b); > return aInt.CompareTo(bInt); > case DataType.DateTime: > IFormatProvider formatter = CultureInfo.InvariantCulture.DateTimeFormat; > DateTime aDate = DateTime.Parse(a, formatter); > DateTime bDate = DateTime.Parse(b, formatter); > return aDate.CompareTo(bDate); > default: > throw new ApplicationException("Unknown data type comparison: " + type); > } > } > } > } > > > ------------------------------------------------------------------------ > > #region Copyright (c) 2002, 2003 by Brian Knowles and Jim Shore > /******************************************************************************************************************** > ' > ' Copyright (c) 2002, 2003 by Brian Knowles and Jim Shore > ' > ' Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated > ' documentation files (the "Software"), to deal in the Software without restriction, including without limitation > ' the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and > ' to permit persons to whom the Software is furnished to do so, subject to the following conditions: > ' > ' The above copyright notice and this permission notice shall be included in all copies or substantial portions > ' of the Software. > ' > ' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO > ' THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE > ' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF > ' CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER > ' DEALINGS IN THE SOFTWARE. > ' > '******************************************************************************************************************/ > #endregion > > using System; > using NUnit.Framework; > using System.Xml; > using NUnit.Extensions.Asp.AspTester; > > namespace NUnit.Extensions.Asp > { > /// <summary> > /// Base class for NUnitAsp test fixtures. Extend this class to use NUnitAsp. > /// </summary> > [TestFixture] > public abstract class WebFormTestCase > { > private HttpClient browser; > > public WebFormTestCase() > { > } > > /// <summary> > /// Do not call. For use by NUnit only. > /// </summary> > [SetUp] > public void BaseSetUp() > { > browser = new HttpClient(); > SetUp(); > } > > /// <summary> > /// Executed before each test method is run. Override in subclasses to do subclass > /// set up. NOTE: [SetUp] attribute cannot be used in subclasses because it is already > /// in use. > /// </summary> > protected virtual void SetUp() > { > } > > /// <summary> > /// Do not call. For use by NUnit only. > /// </summary> > [TearDown] > protected void BaseTearDown() > { > TearDown(); > } > > /// <summary> > /// Executed after each test method is run. Override in subclasses to do subclass > /// clean up. NOTE: [TearDown] attribute cannot be used in subclasses because it is > /// already in use. > /// </summary> > protected virtual void TearDown() > { > } > > /// <summary> > /// The web form currently loaded by the browser. > /// </summary> > protected WebForm CurrentWebForm > { > get > { > CheckSetUp(); > return new WebForm(browser); > } > } > > /// <summary> > /// The web browser. > /// </summary> > protected HttpClient Browser > { > get > { > CheckSetUp(); > return browser; > } > } > > private void CheckSetUp() > { > if (browser == null) > { > throw new InvalidOperationException("A required setup method in WebFormTestCase was not called. This is probably because you used the [SetUp] attribute in a subclass of WebFormTestCase. That is not supported. Override the SetUp() method instead."); > } > } > } > } > > > ------------------------------------------------------------------------ > > #region Copyright (c) 2002-2004 Brian Knowles, Jim Shore > /******************************************************************************************************************** > ' > ' Copyright (c) 2002-2004 Brian Knowles, Jim Shore > ' > ' Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated > ' documentation files (the "Software"), to deal in the Software without restriction, including without limitation > ' the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and > ' to permit persons to whom the Software is furnished to do so, subject to the following conditions: > ' > ' The above copyright notice and this permission notice shall be included in all copies or substantial portions > ' of the Software. > ' > ' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO > ' THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE > ' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF > ' CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER > ' DEALINGS IN THE SOFTWARE. > ' > '*******************************************************************************************************************/ > #endregion > > using System; > using System.Xml; > using NUnit.Framework; > using NUnit.Extensions.Asp.HtmlTester; > > namespace NUnit.Extensions.Asp.AspTester > { > /// <summary> > /// Tester for System.Web.UI.WebControls.DataGrid > /// </summary> > public class DataGridTester : AspControlTester > { > /// <summary> > /// Create the tester and link it to an ASP.NET control. > /// </summary> > /// <param name="aspId">The ID of the control to test (look in the page's ASP.NET source code for the ID).</param> > /// <param name="container">A tester for the control's container. (In the page's ASP.NET > /// source code, look for the tag that the control is nested in. That's probably the > /// control's container. Use CurrentWebForm if the control is just nested in the form tag.)</param> > public DataGridTester(string aspId, Tester container) : base(aspId, container) > { > } > > /// <summary> > /// The number of rows in the data grid, not counting the header. > /// </summary> > public int RowCount > { > get > { > return Tag.Children("tr").Length - 1; > } > } > > /// <summary> > /// An array of string arrays containing the contents of the data grid, > /// not counting the header. The outer array represents rows and the inner arrays > /// represents cells within the rows. Whitespace has been trimmed from the front and > /// back of the cells. > /// </summary> > [CLSCompliant(false)] > public string[][] TrimmedCells > { > get > { > string[][] result = new string[RowCount][]; > for (int i = 0; i < RowCount; i++) > { > result[i] = GetRow(i).TrimmedCells; > } > return result; > } > } > > /// <summary> > /// The data grid's header row. The first row is always assumed to be the header row. > /// </summary> > public Row GetHeaderRow() > { > return new Row(0, this); > } > > /// <summary> > /// Returns a row from the data grid. Row number zero is the first row <b>after</b> > /// the header row. > /// </summary> > public Row GetRow(int rowNumber) > { > return new Row(rowNumber + 1, this); > } > > /// <summary> > /// Returns a row containing a specific cell. > /// </summary> > /// <param name="columnNumber">The column containing the cell to look for (zero-based).</param> > /// <param name="trimmedValue">The cell to look for.</param> > public Row GetRowByCellValue(int columnNumber, string trimmedValue) > { > string[][] cells = TrimmedCells; > for (int i = 0; i < cells.GetLength(0); i++) > { > if (cells[i][columnNumber] == trimmedValue) return GetRow(i); > } > Assert.Fail("Expected to find a row with '{0}' in column {1} of {2}", trimmedValue, columnNumber, HtmlIdAndDescription); > throw new ApplicationException("This line cannot execute. Fail() throws an exception."); > } > > /// <summary> > /// Click a column heading link that was generated with the "allowSorting='true'" attribute. > /// </summary> > /// <param name="columnNumberZeroBased">The column to sort (zero-based)</param> > public void Sort(int columnNumberZeroBased) > { > Row header = GetHeaderRow(); > HtmlTag cell = header.GetCellElement(columnNumberZeroBased); > HtmlTag[] links = cell.Children("a"); > Assert.IsTrue(0 != links.Length, "Attempted to sort non-sortable grid ({0})", HtmlIdAndDescription); > Assert.AreEqual(1, links.Length, "Expected sort link to have exactly one anchor tag"); > > PostBack(links[0].Attribute("href")); > } > > private HtmlTag GetRowTag(int rowNumber) > { > return Tag.Children("tr")[rowNumber]; > } > > protected internal override string GetChildElementHtmlId(string aspId) > { > try > { > int rowNumber = int.Parse(aspId); > return HtmlId + "__ctl" + (rowNumber + 1); > } > catch (FormatException) > { > throw new ContainerMustBeRowException(aspId, this); > } > } > > /// <summary> > /// Tests a row within a data grid. > /// </summary> > public class Row : AspControlTester > { > private int rowNumber; > private DataGridTester container; > > /// <summary> > /// Create the tester and link it to a row in a specific data grid. > /// </summary> > /// <param name="rowNumberWhereZeroIsHeader">The row to test.</param> > /// <param name="container">The data grid that contains the row.</param> > public Row(int rowNumberWhereZeroIsHeader, DataGridTester container) : base(rowNumberWhereZeroIsHeader.ToString(), container) > { > this.rowNumber = rowNumberWhereZeroIsHeader; > this.container = container; > } > > protected internal override string GetChildElementHtmlId(string inAspId) > { > return HtmlId + "_" + inAspId; > } > > protected override HtmlTag Tag > { > get > { > return container.GetRowTag(rowNumber); > } > } > > /// <summary> > /// The cells in the row. Whitespace has been trimmed from the front and back > /// of the cells. > /// </summary> > public string[] TrimmedCells > { > get > { > HtmlTag[] cells = Tag.Children("td"); > string[] cellText = new string[cells.Length]; > for (int i = 0; i < cells.Length; i++) > { > cellText[i] = cells[i].BodyNoTags.Trim(); > } > return cellText; > } > } > > internal HtmlTag GetCellElement(int columnNumberZeroBased) > { > HtmlTag[] cells = Tag.Children("td"); > Assert.IsTrue(columnNumberZeroBased >= 0 && columnNumberZeroBased < cells.Length, > "There is no column #{0} in {1}", columnNumberZeroBased, HtmlIdAndDescription); > return cells[columnNumberZeroBased]; > } > } > } > > /// <summary> > /// Exception: The container of the control being tested was a DataGridTester, but > /// it should be a Row. Change "new MyTester("foo", datagrid)" to > /// "new MyTester("foo", datagrid.getRow(rowNum))". > /// </summary> > public class ContainerMustBeRowException : ApplicationException > { > internal ContainerMustBeRowException(string aspId, DataGridTester dataGrid) > : base(GetMessage(aspId, dataGrid)) > { > } > > private static string GetMessage(string aspId, DataGridTester dataGrid) > { > return String.Format( > "Tester '{0}' has DataGridTester '{1}' as its container. That isn't allowed. " > + "It should be a DataGridTester.Row. When constructing {0}, pass '{1}.getRow(#)' " > + "as the container argument.", > aspId, dataGrid.AspId); > } > } > } -- Jim Shore Titanium I.T. LLC - Making IT Profitable I coach XP and Lean Development. Now available in Portland, Ore. phone: 503-267-5490 email: js...@ti... |
From: Peijen L. <pei...@gm...> - 2005-01-22 15:03:27
|
I assume the intention is for the following test to fail, but it passed instead. Maybe it's suppose to pass, maybe not. [Test] public void TestIgnoreOrder() { string[] abc = {"a", "b", "c"}; string[] def = {"d", "e", "f"}; string[][] a = new string[2][]; string[][] b = new string[2][]; a[0] = abc; a[1] = def; b[0] = abc; b[1] = abc; WebAssert.AreEqualIgnoreOrder(a, b); } |
From: Peijen L. <pei...@gm...> - 2005-01-22 14:45:28
|
Opps I seem to have missed these files. All Assertion have been changed to use Assert.Whatever. Copyright stuff I assign the copyright to these files to Brian Knowles and Jim Shore. |
From: Peijen L. <pei...@gm...> - 2005-01-22 14:32:29
|
Here are some changes I made to the following files for NUnitAsp to compile without warning for NUnit 2.2 (using VS.NET 2003). I tried to find a copy of NUnitAsp that works with NUnit 2.2 and compile with .Net 1.1, but I couldn't find it. Let me know if someone has already done this, so I can discard this change and use the official release instead. I tried to create patch files for these changes, but because of newline difference between platforms there is really no point. I included the cs files instead. - WebAssert.cs A new class WebAssert is created to replace WebAssertion. This class doen't derive from Assertion. All Assertion method calls has been changed to use Assert.Whatever. Method names have been changed to match NUnit 2.2 Assert class. Method parameter orders have been changed to match NUnit 2.2 String array AssertionEquals functions have been removed since NUnit 2.2 supplies AreEqual methods for arrays. Minor optimization to AreEqualIgnoreOrder (I noticed a bug in this function, but I didn't fix it) Removed helper functions not in use - WebFormTestCase.cs Doesn't derive from WebAssertion anymore. All Assertion method calls has been changed to use Assert.Whatever. - AspTester/DataGridTester.cs All Assertion method calls has been changed to use Assert.Whatever. I didn't run unit test for these changes because I don't have a webserver running. Feedback are welcome. Peijen Lin Copyright stuff I assign the copyright to these files to Brian Knowles and Jim Shore. |
From: Jim S. <js...@ti...> - 2004-12-06 21:52:31
|
It just keeps coming... I've finished the initial draft of the "Customer's Quick-Start Guide." Feedback, as always, wanted and appreciated. http://fit.c2.com/wiki.cgi?CustomersQuickStartGuide Jim -- Jim Shore Titanium I.T. LLC - Making IT Profitable Find my new article, "Fail Fast," in the Sept/Oct issue of IEEE Software. phone: 503-267-5490 email: js...@ti... |
From: Jim S. <js...@ti...> - 2004-11-30 23:49:47
|
I've finished the 1.5.1 release--you may now commit to the CVS tree. Jim -- Jim Shore Titanium I.T. LLC - Making IT Profitable Find my new article, "Fail Fast," in the Sept/Oct issue of IEEE Software. phone: 503-267-5490 email: js...@ti... |
From: Jim S. <js...@ti...> - 2004-11-30 23:48:40
|
NUnitAsp v1.5.1 is now available for download. NUnitAsp is a tool for test-driven development of ASP.NET web pages. Version 1.5 includes a modest collection of improvements over version 1.4. The most important new feature is improved custom tester support. We've exposed a number of methods needed for writing custom testers and we've created a new HtmlTag class that's easy to use and understand. Even if you aren't writing custom testers, you'll appreciate 1.5's improved error reporting and API documentation. Particularly handy is the new ability to report server-side ASP.NET exceptions directly within test failure messages. Version 1.5.1 is nearly identical to version 1.5. It requires NUnit 2.2 rather than NUnit 2.1 NUnitAsp v1.5.1 is available for download at: http://prdownloads.sourceforge.net/nunitasp/NUnitAsp-1.5.1.zip?download <http://prdownloads.sourceforge.net/nunitasp/NUnitAsp-1.5.zip?download>. A detailed change log may be found at: http://nunitasp.sourceforge.net/changes.txt The NUnitAsp website is at http://nunitasp.sourceforge.net. Jim Shore Project Coordinator NUnitAsp -- Jim Shore Titanium I.T. LLC - Making IT Profitable Find my new article, "Fail Fast," in the Sept/Oct issue of IEEE Software. phone: 503-267-5490 email: js...@ti... |
From: Jim S. <js...@ti...> - 2004-11-30 22:30:51
|
I'm starting the release process for NUnitAsp 1.5.1 (NUnit 2.2 support). Please avoid making changes to the source tree until I'm done. Thanks, Jim -- Jim Shore Titanium I.T. LLC - Making IT Profitable Find my new article, "Fail Fast," in the Sept/Oct issue of IEEE Software. phone: 503-267-5490 email: js...@ti... |
From: Jim S. <js...@ti...> - 2004-11-22 17:56:31
|
Venkata, NUnitAsp does support hidden fields. Any hidden fields on the page should automatically be posted back to the server. Can you simplify your code into the smallest case that demonstrates the problem, and post it as a bug on SourceForge? If the problem is in your code, this will help you track it down as well. Jim Venkata Ramana Yekasi wrote: > Hi All, > > I am facing a peculiar situation while testing aspx Pages > with hidden fields on its form, using NUnitAsp. > > > > I have a page which is using a hidden field which is used to populate > userid to next page. > > When I go to next page it is taking me into error page. > > When I did debugging using my NUnitAsp code, I found that > value in the hidden field is null. (i.e value is not getting populated > into hidden value). > > Hence the next page cannot be loaded. > > > > Does NunitAsp support hidden field's? what could be the > reason for value to be null in Hidden Field. > > Any suggestion/inputs in this regard will be of great help > for me. > > > > Thanks & regards, > > **Venkata Ramana yekasi** > > ¬*Sapient** **| Making Technology Matter*** > > Email: vr...@sa... <mailto:vr...@sa...> > > > -- Jim Shore Titanium I.T. LLC - Making IT Profitable Find my new article, "Fail Fast," in the Sept/Oct issue of IEEE Software. phone: 503-267-5490 email: js...@ti... |
From: Venkata R. Y. <vr...@sa...> - 2004-11-21 11:35:46
|
Hi All, I am facing a peculiar situation while testing aspx Pages = with hidden fields on its form, using NUnitAsp. =20 I have a page which is using a hidden field which is used to populate = userid to next page. When I go to next page it is taking me into error page. When I did debugging using my NUnitAsp code, I found that = value in the hidden field is null. (i.e value is not getting populated = into hidden value). Hence the next page cannot be loaded. =20 Does NunitAsp support hidden field's? what could be the = reason for value to be null in Hidden Field. Any suggestion/inputs in this regard will be of great help = for me. =20 Thanks & regards, Venkata Ramana yekasi =ACSapient | Making Technology Matter Email: vr...@sa... =20 |
From: Jim S. <js...@ti...> - 2004-11-18 00:53:17
|
Andrew Stopford wrote: > Do get a good feel for what MbUnit can do and why its much more (IMHO) > powerful than NUnit then check out the posts by its creator Johnathan > de Halleux http://blog.dotnetwiki.org/ Thanks, I'll take a look. > For MbUnit to work it does require that the new assert class is used > in placed of the assertion class as per my previous email. Do you > think that NUnitASP will be upgraded to this ahead of a decouple? Probably not, unless decoupling NUnitAsp from NUnit turns out to be a bigger problem than I expected. Jim -- Jim Shore Titanium I.T. LLC - Making IT Profitable Find my new article, "Fail Fast," in the Sept/Oct issue of IEEE Software. phone: 503-267-5490 email: js...@ti... |
From: Andrew S. <ast...@ds...> - 2004-11-18 00:30:53
|
Hi Jim, Do get a good feel for what MbUnit can do and why its much more (IMHO) powerful than NUnit then check out the posts by its creator Johnathan de Halleux http://blog.dotnetwiki.org/ For MbUnit to work it does require that the new assert class is used in placed of the assertion class as per my previous email. Do you think that NUnitASP will be upgraded to this ahead of a decouple? The decouple idea makes sense, looking forward to seeing folks ideas on this. Thanks Andrew http://weblogs.asp.net/astopford ----- Original Message ----- From: "Jim Shore" <js...@ti...> To: < Cc: "Andrew Stopford" <ast...@ds...> Sent: Thursday, November 18, 2004 12:15 AM Subject: Re: [NUnitAsp-devl] NUnitASP on MbUnit > Hi, Andrew, > > Thanks for the note. Currently, NUnitAsp support for NUnit 2.2 is in CVS > but not yet widely available. I'll be releasing it later this month. The > port is just a simple recompile with NUnit 2.2, so nothing's changed so > far. > > For NUnitAsp v1.6, which comes out after NUnit 2.2 support, I hope to > remove the dependency on NUnit so NUnitAsp can be used without > modification with any testing framework, including MbUnit and csUnit. > (This also means people won't have to wait for a new version of NUnitAsp > every time a new version of NUnit comes out!) > > This is the first I've heard of MbUnit. I looked at the web site but I > didn't see how MbUnit is different or better than NUnit. Can you explain? > > Jim > > -- > Jim Shore > Titanium I.T. LLC - Making IT Profitable > Find my new article, "Fail Fast," in the Sept/Oct issue of IEEE Software. > > phone: 503-267-5490 > email: js...@ti... > > > Andrew Stopford wrote: > >> Hi, >> I have ported NUnitASP to MbUnit (http://mbunit.tigris.org/) as part of >> this port I have changed NUnitASP to use the NUnit 2.2 assert class >> rather than the old assertion class. MbUnit has no support for this older >> style hench the need to change. >> I do recall seeing a post that NUnitASP has been upgraded to NUnit 2.2, >> is the new syntax in use? If so then to use MbUnit its simply a case of >> replacing the NUnit.Framework.dll with MBUnit.Core.dll and >> MbUnit.Franework and to referance MbUnit.Core.Framework and >> MbUnit.Framework rather than NUnitFramework. >> Thanks >> Andrew >> http://weblogs.asp.net/astopford > > |
From: Jim S. <js...@ti...> - 2004-11-18 00:15:35
|
Hi, Andrew, Thanks for the note. Currently, NUnitAsp support for NUnit 2.2 is in CVS but not yet widely available. I'll be releasing it later this month. The port is just a simple recompile with NUnit 2.2, so nothing's changed so far. For NUnitAsp v1.6, which comes out after NUnit 2.2 support, I hope to remove the dependency on NUnit so NUnitAsp can be used without modification with any testing framework, including MbUnit and csUnit. (This also means people won't have to wait for a new version of NUnitAsp every time a new version of NUnit comes out!) This is the first I've heard of MbUnit. I looked at the web site but I didn't see how MbUnit is different or better than NUnit. Can you explain? Jim -- Jim Shore Titanium I.T. LLC - Making IT Profitable Find my new article, "Fail Fast," in the Sept/Oct issue of IEEE Software. phone: 503-267-5490 email: js...@ti... Andrew Stopford wrote: > Hi, > > I have ported NUnitASP to MbUnit (http://mbunit.tigris.org/) as part > of this port I have changed NUnitASP to use the NUnit 2.2 assert class > rather than the old assertion class. MbUnit has no support for this > older style hench the need to change. > > I do recall seeing a post that NUnitASP has been upgraded to NUnit > 2.2, is the new syntax in use? If so then to use MbUnit its simply a > case of replacing the NUnit.Framework.dll with MBUnit.Core.dll and > MbUnit.Franework and to referance MbUnit.Core.Framework and > MbUnit.Framework rather than NUnitFramework. > > Thanks > > Andrew > http://weblogs.asp.net/astopford |
From: Andrew S. <ast...@ds...> - 2004-11-18 00:04:01
|
Hi, I have ported NUnitASP to MbUnit (http://mbunit.tigris.org/) as part of = this port I have changed NUnitASP to use the NUnit 2.2 assert class = rather than the old assertion class. MbUnit has no support for this = older style hench the need to change. I do recall seeing a post that NUnitASP has been upgraded to NUnit 2.2, = is the new syntax in use? If so then to use MbUnit its simply a case of = replacing the NUnit.Framework.dll with MBUnit.Core.dll and = MbUnit.Franework and to referance MbUnit.Core.Framework and = MbUnit.Framework rather than NUnitFramework. Thanks Andrew http://weblogs.asp.net/astopford |
From: Igor K. <ig...@we...> - 2004-11-16 12:52:45
|
Ok, i totally screwed up and posted this twice in the wrong way. In order to allow a correct threading for list readers, I repost hereby with, I hope, correct To- and Subject-field. So here's my original: ------ I'm sorry. I totally overlooked your reply (though I was monitoring the list). So here's a (somewhat late) response. I haven't checked the source of the new (2.2) checkin, as I haven't got the time. If the issue has been fixed, feel free to ignore this mail ;) > Thanks for your detailed analysis, Igor. Could you go into more detail > about what you do to cause the exception to be thrown? > What do you mean by "an aspx page with errors?" Just perform an operation that throws an exception, for instance, access an array outside it's boundaries. So an "aspx with errors" is just an aspx that throws an uncaught exception. > Is it possible to reproduce the problem > without using CC.NET? I use TestDriven on the very same code in VS.NET, and the issue didn't arise here. Maybe because TestDriven doesn't use a file? Igor |
From: Igor K. <ig...@we...> - 2004-11-16 12:31:23
|
I'm sorry. I totally overlooked your reply (though I was monitoring the list). So here's a (somewhat late) response. I haven't checked the source of the new (2.2) checkin, as I haven't got the time. If the issue has been fixed, feel free to ignore this mail ;) > Thanks for your detailed analysis, Igor. Could you go into more detail > about what you do to cause the exception to be thrown? > What do you mean by "an aspx page with errors?" Just perform an operation that throws an exception, for instance, access an array outside it's boundaries. So an "aspx with errors" is just an aspx that throws an uncaught exception. > Is it possible to reproduce the problem > without using CC.NET? I use TestDriven on the very same code in VS.NET, and the issue didn't arise here. Maybe because TestDriven doesn't use a file? Igor PS: and of course, I replied instead of sending this to the list. So here's a copy ;) |
From: Jim S. <js...@ti...> - 2004-11-05 19:46:21
|
I've checked in NUnit 2.2 support that uses the old <exec> approach. Should I go ahead and release it or do you want to upgrade NAnt? I'm not too worried about using a nightly build so long as it works... Jim Levi Khatskevitch wrote: > You're right. NMock uses a nightly build of NAnt 0.85 and there're > breaking changes in NUnit.Framework between 2.1 and 2.2. Sometimes > these things just don't work together as well as we wish they would. > > - Levi > > ----- Original Message ----- From: "Levi Khatskevitch" > <lkh...@ho...> > To: "Jim Shore" <js...@ti...> > Cc: <nun...@li...> > Sent: Friday, November 05, 2004 9:22 AM > Subject: Re: [NUnitAsp-devl] NAnt and NUnit 2.2 > > >> I have it working in NMock project, let me confirm what NAnt version >> we're using there... >> >> - Levi >> >> ----- Original Message ----- From: "Jim Shore" <js...@ti...> >> To: "Levi Khatskevitch" <lkh...@ho...> >> Cc: <nun...@li...> >> Sent: Thursday, November 04, 2004 7:30 PM >> Subject: [NUnitAsp-devl] NAnt and NUnit 2.2 >> >> >>> Levi, >>> >>> I've upgraded my local copy of NUnitAsp to use NUnit 2.2. It was a >>> painless drop-in, although NUnit has some very annoying changes to >>> its assertion handling. There's only one problem: NAnt's <nunit2> >>> task doesn't work with NUnit 2.2 and the new version of NAnt isn't >>> out yet. I'm inclined to go back to the <exec> task, but I thought >>> you might be able to work some magic with NAnt as you have in the >>> past. Any ideas? >>> >>> Jim >> >> > > > ------------------------------------------------------- > This SF.Net email is sponsored by: > Sybase ASE Linux Express Edition - download now for FREE > LinuxWorld Reader's Choice Award Winner for best database on Linux. > http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click > _______________________________________________ > NUnitAsp-devl mailing list > NUn...@li... > https://lists.sourceforge.net/lists/listinfo/nunitasp-devl -- Jim Shore Titanium I.T. LLC - Making IT Profitable Now available to help your Portland, Ore. team. phone: 503-267-5490 email: js...@ti... |
From: Levi K. <lkh...@ho...> - 2004-11-05 19:26:14
|
You're right. NMock uses a nightly build of NAnt 0.85 and there're breaking changes in NUnit.Framework between 2.1 and 2.2. Sometimes these things just don't work together as well as we wish they would. - Levi ----- Original Message ----- From: "Levi Khatskevitch" <lkh...@ho...> To: "Jim Shore" <js...@ti...> Cc: <nun...@li...> Sent: Friday, November 05, 2004 9:22 AM Subject: Re: [NUnitAsp-devl] NAnt and NUnit 2.2 >I have it working in NMock project, let me confirm what NAnt version we're >using there... > > - Levi > > ----- Original Message ----- > From: "Jim Shore" <js...@ti...> > To: "Levi Khatskevitch" <lkh...@ho...> > Cc: <nun...@li...> > Sent: Thursday, November 04, 2004 7:30 PM > Subject: [NUnitAsp-devl] NAnt and NUnit 2.2 > > >> Levi, >> >> I've upgraded my local copy of NUnitAsp to use NUnit 2.2. It was a >> painless drop-in, although NUnit has some very annoying changes to its >> assertion handling. There's only one problem: NAnt's <nunit2> task >> doesn't work with NUnit 2.2 and the new version of NAnt isn't out yet. >> I'm inclined to go back to the <exec> task, but I thought you might be >> able to work some magic with NAnt as you have in the past. Any ideas? >> >> Jim > |
From: Jim S. <js...@ti...> - 2004-11-05 17:51:02
|
Upgraded to NUnit 2.2.0. Jim -- Jim Shore Titanium I.T. LLC - Making IT Profitable Now available to help your Portland, Ore. team. phone: 503-267-5490 email: js...@ti... |
From: Jim S. <js...@ti...> - 2004-11-05 16:10:44
|
Thanks for your detailed analysis, Igor. Could you go into more detail about what you do to cause the exception to be thrown? What do you mean by "an aspx page with errors?" Is it possible to reproduce the problem without using CC.NET? Thanks, Jim Igor Kalders wrote: >Hello, > >I'm using NUnitAsp in combination with CruiseControl.NET. From the moment I >request an aspx page with errors after I already requested such one, >NUnitAsp throws an error. I checked the NUnitAsp source code, and it seems >that SgmlReader closes the log stream that is assigned to it >(NUnitAsp/Sgml/SgmlReader.cs,line:1273). > >It appears to me that this should be the callers responsibility, e.g. >NUnitAsp/WebPage.cs,line:92. In this case for instance (which is the only >case applicable to this bug), the Console.Error is passed. I don't know much >about cc.net's internals, but I suspect Console.Error is a file. So, once a >close is issued, the file becomes inaccessible. The SgmlReader still tries >to write errors to the log, but fails with a "Cannot write to a closed >TextWriter". > >I "fixed" this by checking whether SgmlReader._log == Console.Error, but I >suspect that the Close has to disappear alltogether. > >Igor > > > > >------------------------------------------------------- >This SF.Net email is sponsored by: >Sybase ASE Linux Express Edition - download now for FREE >LinuxWorld Reader's Choice Award Winner for best database on Linux. >http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click >_______________________________________________ >NUnitAsp-devl mailing list >NUn...@li... >https://lists.sourceforge.net/lists/listinfo/nunitasp-devl > > -- Jim Shore Titanium I.T. LLC - Making IT Profitable Now available to help your Portland, Ore. team. phone: 503-267-5490 email: js...@ti... |
From: Levi K. <lkh...@ho...> - 2004-11-05 14:23:55
|
I have it working in NMock project, let me confirm what NAnt version we're using there... - Levi ----- Original Message ----- From: "Jim Shore" <js...@ti...> To: "Levi Khatskevitch" <lkh...@ho...> Cc: <nun...@li...> Sent: Thursday, November 04, 2004 7:30 PM Subject: [NUnitAsp-devl] NAnt and NUnit 2.2 > Levi, > > I've upgraded my local copy of NUnitAsp to use NUnit 2.2. It was a > painless drop-in, although NUnit has some very annoying changes to its > assertion handling. There's only one problem: NAnt's <nunit2> task > doesn't work with NUnit 2.2 and the new version of NAnt isn't out yet. > I'm inclined to go back to the <exec> task, but I thought you might be > able to work some magic with NAnt as you have in the past. Any ideas? > > Jim |
From: Igor K. <ig...@we...> - 2004-11-05 10:37:14
|
Hello, I'm using NUnitAsp in combination with CruiseControl.NET. From the moment I request an aspx page with errors after I already requested such one, NUnitAsp throws an error. I checked the NUnitAsp source code, and it seems that SgmlReader closes the log stream that is assigned to it (NUnitAsp/Sgml/SgmlReader.cs,line:1273). It appears to me that this should be the callers responsibility, e.g. NUnitAsp/WebPage.cs,line:92. In this case for instance (which is the only case applicable to this bug), the Console.Error is passed. I don't know much about cc.net's internals, but I suspect Console.Error is a file. So, once a close is issued, the file becomes inaccessible. The SgmlReader still tries to write errors to the log, but fails with a "Cannot write to a closed TextWriter". I "fixed" this by checking whether SgmlReader._log == Console.Error, but I suspect that the Close has to disappear alltogether. Igor |