title: How to assert true and false in single parameterized test method
body: <p>I am new to Unit Testing and quite confusing about testing true or false result returned from method rely on parameter. I am currently using NUnit and MoQ, below is my code. Test will run three times with value A, B, C for each time respectively.</p>
  
  <pre><code>[Test]
      public void IFoo_Return_True_With_A_As_Input([Values("A", "B", "C")]string value){
          var mock = new Mock&lt;IFoo&gt;();
          // setup
          mock.Setup(foo =&gt; foo.DoSomething("A")).Returns(true);
  
          // Arrage
          Func&lt;string, bool&gt; action = (_) =&gt; mock.Object.DoSomething(_);
  
          // Act
          bool result = action(value);
  
          // Assert
          Assert.That(result, /* ??? */);
      }
  </code></pre>
  
  <p>I have a method which receives a value through parameter <em>IFoo.DoSomething</em> and it will return <strong>true</strong> if the value of parameter is <em>A</em>, otherwise it will return <strong>false</strong>. I do not know how to present this kind of test in single test. </p>
  
  <p>I thought I can not use multiple assertions(I mean one assert for true and other for false) because result will be evaluated to true or false per test. I thought I could use <em>TestCase</em> with <em>ExpectedResult</em> OR <em>Assume</em> before Assert OR write two test(one for A value and other for other values) but I would like to know whether we have any sophisticated ways to achieve kind this test.</p>
  
  <p>My expectation would be three test will passed with true or false evaluated rely on supplied value in single test. Please advise me if I am not going on the right track about Unit Test.</p>
  
  <p>The setup of mock is the way I present the implementation of <em>IFoo.DoSomething</em> method. Its logic is return true if value is A and false if otherwise.</p>