PageRenderTime 40ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/source/library/Interlace.Tests/Utilities/TestNotifyRelatedEntityChanged.cs

https://bitbucket.org/VahidN/interlace
C# | 87 lines | 41 code | 16 blank | 30 comment | 2 complexity | d3b722e3dd27a3bcf58b1c721fca8690 MD5 | raw file
  1. #region Using Directives and Copyright Notice
  2. // Copyright (c) 2007-2010, Computer Consultancy Pty Ltd
  3. // All rights reserved.
  4. //
  5. // Redistribution and use in source and binary forms, with or without
  6. // modification, are permitted provided that the following conditions are met:
  7. // * Redistributions of source code must retain the above copyright
  8. // notice, this list of conditions and the following disclaimer.
  9. // * Redistributions in binary form must reproduce the above copyright
  10. // notice, this list of conditions and the following disclaimer in the
  11. // documentation and/or other materials provided with the distribution.
  12. // * Neither the name of the Computer Consultancy Pty Ltd nor the
  13. // names of its contributors may be used to endorse or promote products
  14. // derived from this software without specific prior written permission.
  15. //
  16. // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  17. // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  18. // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  19. // ARE DISCLAIMED. IN NO EVENT SHALL COMPUTER CONSULTANCY PTY LTD BE LIABLE
  20. // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  21. // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  22. // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  23. // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  24. // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  25. // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
  26. // DAMAGE.
  27. using System;
  28. using System.Collections.Generic;
  29. using System.ComponentModel;
  30. using System.Text;
  31. using EntrustDal.EntityClasses;
  32. using MbUnit.Framework;
  33. using Interlace.Utilities;
  34. #endregion
  35. namespace Interlace.Tests.Utilities
  36. {
  37. [TestFixture]
  38. class TestNotifyRelatedEntityChanged
  39. {
  40. [Test]
  41. public void Go()
  42. {
  43. UserEntity user = new UserEntity();
  44. int eventCalledCount = 0;
  45. UserCertificateEntity eventCalledCertificate = null;
  46. user.PropertyChanged += new PropertyChangedEventHandler(
  47. delegate(object sender, PropertyChangedEventArgs e)
  48. {
  49. if (e.PropertyName == "Certificate")
  50. {
  51. eventCalledCount++;
  52. // Save the certificate to ensure that at the time of the event the
  53. // property has been updated:
  54. eventCalledCertificate = user.Certificate;
  55. }
  56. });
  57. // Try setting the certificate:
  58. user.Certificate = new UserCertificateEntity();
  59. Assert.AreEqual(1, eventCalledCount);
  60. Assert.IsTrue(object.ReferenceEquals(user.Certificate, eventCalledCertificate));
  61. // Try setting a different certificate:
  62. user.Certificate = new UserCertificateEntity();
  63. Assert.AreEqual(2, eventCalledCount);
  64. Assert.IsTrue(object.ReferenceEquals(user.Certificate, eventCalledCertificate));
  65. // Try clearing the certificate:
  66. user.Certificate = null;
  67. Assert.AreEqual(3, eventCalledCount);
  68. Assert.IsNull(eventCalledCertificate);
  69. }
  70. }
  71. }