// Copyright (c) The Geekeey Authors // SPDX-License-Identifier: EUPL-1.2 namespace Geekeey.Extensions.Result.Tests; [TestFixture] internal sealed class ResultEqualityTests { [Test] public void I_can_equal_t_and_get_true_for_success_with_equal_value() { var a = Success(2); var b = 2; Assert.That(a.Equals(b), Is.True); } [Test] public void I_can_equal_t_and_get_false_for_success_with_unequal_value() { var a = Success(2); var b = 3; Assert.That(a.Equals(b), Is.False); } [Test] public void I_can_equal_t_and_get_false_for_failure() { var a = Failure("error"); var b = 2; Assert.That(a.Equals(b), Is.False); } [Test] public void I_can_equal_result_and_get_true_for_success_and_success_with_equal_value() { var a = Success(2); var b = Success(2); Assert.That(a.Equals(b), Is.True); } [Test] public void I_can_equal_result_and_get_false_for_success_and_success_with_unequal_value() { var a = Success(2); var b = Success(3); Assert.That(a.Equals(b), Is.False); } [Test] public void I_can_equals_result_and_get_false_for_success_and_failure() { var a = Success(2); var b = Failure("error 1"); Assert.That(a.Equals(b), Is.False); } [Test] public void I_can_equals_result_and_get_false_for_failure_and_success() { var a = Failure("error"); var b = Success(2); Assert.That(a.Equals(b), Is.False); } [Test] public void I_can_equals_result_and_get_true_for_failure_and_failure() { var a = Failure("error 1"); var b = Failure("error 2"); Assert.That(a.Equals(b), Is.True); } [Test] public void I_can_equal_t_and_get_true_for_success_with_equal_value_using_comparer() { var a = Success(2); var b = 2; Assert.That(a.Equals(b, EqualityComparer.Default), Is.True); } [Test] public void I_can_equal_t_and_get_false_for_success_with_unequal_value_using_comparer() { var a = Success(2); var b = 3; Assert.That(a.Equals(b, EqualityComparer.Default), Is.False); } [Test] public void I_can_equal_t_and_get_false_for_failure_using_comparer() { var a = Failure("error"); var b = 2; Assert.That(a.Equals(b, EqualityComparer.Default), Is.False); } [Test] public void I_can_equal_result_and_get_true_for_success_and_success_with_equal_value_using_comparer() { var a = Success(2); var b = Success(2); Assert.That(a.Equals(b, EqualityComparer.Default), Is.True); } [Test] public void I_can_equal_result_and_get_false_for_success_and_success_with_unequal_value_using_comparer() { var a = Success(2); var b = Success(3); Assert.That(a.Equals(b, EqualityComparer.Default), Is.False); } [Test] public void I_can_equals_result_and_get_false_for_success_and_failure_using_comparer() { var a = Success(2); var b = Failure("error 1"); Assert.That(a.Equals(b, EqualityComparer.Default), Is.False); } [Test] public void I_can_equals_result_and_get_false_for_failure_and_success_using_comparer() { var a = Failure("error"); var b = Success(2); Assert.That(a.Equals(b, EqualityComparer.Default), Is.False); } [Test] public void I_can_equals_result_and_get_true_for_failure_and_failure_using_comparer() { var a = Failure("error 1"); var b = Failure("error 2"); Assert.That(a.Equals(b, EqualityComparer.Default), Is.True); } [Test] public void I_can_get_hashcode_and_get_hashcode_for_success() { var result = Success(2); Assert.That(result.GetHashCode(), Is.EqualTo(2.GetHashCode())); } [Test] public void I_can_get_hashcode_and_get_zero_for_null() { var result = Success(null); Assert.That(result.GetHashCode(), Is.Zero); } [Test] public void I_can_get_hashcode_and_get_zero_for_failure() { var result = Failure("error"); Assert.That(result.GetHashCode(), Is.Zero); } }