title: Is it wrong to use Assert.That (rather than Assume.That) with a [Theory]?
body: <pre><code>interface IPoint
  {
      int X { get; }
      int Y { get; }
  }
  
  static bool CoincidesWith(this IPoint self, IPoint other); // implementation unknown
  </code></pre>
  
  <p>I want to write a NUnit test that verifies my assumption about the meaning of <code>CoincidesWith</code>:</p>
  
  <blockquote>
    <p><code>self.CoincidesWith(other)</code> ⇔ (<code>self.X</code> = <code>other.X</code>) ∧ (<code>self.Y</code> = <code>other.Y</code>)</p>
  </blockquote>
  
  <p>The following is the most succinct test I've been able to come up with so far:</p>
  
  <pre><code>[Theory]
  void CoincidesWith_Iff_CoordinatesAreEqual(IPoint self, IPoint other)
  {
      bool coordinatesAreEqual = (self.X == other.X &amp;&amp; self.Y == other.Y);
      Assert.That(self.CoincidesWith(other) == coordinatesAreEqual);
  }
  </code></pre>
  
  <p>My questions, in descending order of importance, are:</p>
  
  <ol>
  <li>With <code>[Theory]</code>, is it considered wrong, or bad style, to use <code>Assert.That</code> instead of <code>Assume.That</code>? (<a href="http://nunit.org/index.php?p=theory&amp;r=2.5" rel="nofollow">The documentation seems to suggest that the latter should be used in conjunction with <code>[Theory]</code>.</a>)</li>
  <li>Is this case indeed more suitable for a <code>[Theory]</code> rather than a <code>[Test]</code>?</li>
  </ol>