public void Equals_should_return_true_if_all_fields_are_equal(int?w, int?wTimeoutSeconds, bool?fsync, bool?journal) { var wCount = w.HasValue ? (WriteConcern.WValue)w.Value : null; var wTimeout = wTimeoutSeconds.HasValue ? (TimeSpan?)TimeSpan.FromSeconds(wTimeoutSeconds.Value) : null; var writeConcern1 = new WriteConcern(wCount, wTimeout, fsync, journal); var writeConcern2 = new WriteConcern(wCount, wTimeout, fsync, journal); writeConcern1.Equals((WriteConcern)writeConcern2).Should().BeTrue(); writeConcern1.Equals((object)writeConcern2).Should().BeTrue(); writeConcern1.GetHashCode().Should().Be(writeConcern2.GetHashCode()); }