Skip to content

Commit

Permalink
Add hasNullValue and doesNotHaveNullValue to AtomicReferenceAssert
Browse files Browse the repository at this point in the history
Fix #2969
  • Loading branch information
Gihwan Kim authored and joel-costigliola committed Mar 3, 2023
1 parent 943a167 commit 0194172
Show file tree
Hide file tree
Showing 3 changed files with 121 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -163,4 +163,39 @@ public AtomicReferenceAssert<V> hasValueSatisfying(Consumer<? super V> requireme
return myself;
}

/**
* Verifies that the atomic under test has the {@code null} value.
* <p>
* Example:
* <pre><code class='java'> // assertion succeeds
* assertThat(new AtomicReference(null)).hasNullValue();
*
* // assertion fails
* assertThat(new AtomicReference("foo")).hasNullValue();</code></pre>
*
* @return {@code this} assertion object.
* @throws AssertionError if the atomic under test does not have the null value.
* @since 3.25.0
*/
public AtomicReferenceAssert<V> hasNullValue() {
return hasValue(null);
}

/**
* Verifies that the atomic under test does not have the {@code null} value.
* <p>
* Example:
* <pre><code class='java'> // assertion succeeds
* assertThat(new AtomicReference("foo")).doesNotHaveNullValue();
*
* // assertion fails
* assertThat(new AtomicReference(null)).doesNotHaveNullValue();</code></pre>
*
* @return {@code this} assertion object.
* @throws AssertionError if the atomic under test has the null value.
* @since 3.25.0
*/
public AtomicReferenceAssert<V> doesNotHaveNullValue() {
return doesNotHaveValue(null);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* Copyright 2012-2023 the original author or authors.
*/
package org.assertj.core.api.atomic.reference;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.BDDAssertions.then;
import static org.assertj.core.error.ShouldNotContainValue.shouldNotContainValue;
import static org.assertj.core.util.AssertionsUtil.expectAssertionError;

import java.util.concurrent.atomic.AtomicReference;

import org.junit.jupiter.api.Test;

class AtomicReferenceAssert_doesNotHaveNullValue_Test {

@Test
void should_pass_when_actual_does_not_have_the_null_value() {
// GIVEN
AtomicReference<String> actual = new AtomicReference<>("foo");
// WHEN/THEN
then(actual).doesNotHaveNullValue();
}

@Test
void should_fail_when_actual_has_the_null_value() {
// GIVEN
AtomicReference<String> actual = new AtomicReference<>(null);
// WHEN
AssertionError assertionError = expectAssertionError(() -> assertThat(actual).doesNotHaveNullValue());
// THEN
then(assertionError).hasMessage(shouldNotContainValue(actual, null).create());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* Copyright 2012-2023 the original author or authors.
*/
package org.assertj.core.api.atomic.reference;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.BDDAssertions.then;
import static org.assertj.core.error.ShouldHaveValue.shouldHaveValue;
import static org.assertj.core.util.AssertionsUtil.expectAssertionError;

import java.util.concurrent.atomic.AtomicReference;

import org.junit.jupiter.api.Test;

class AtomicReferenceAssert_hasNullValue_Test {

@Test
void should_pass_when_actual_has_the_null_value() {
// GIVEN
AtomicReference<String> actual = new AtomicReference<>(null);
// WHEN/THEN
then(actual).hasNullValue();
}

@Test
void should_fail_when_actual_does_not_have_the_null_value() {
// GIVEN
AtomicReference<String> actual = new AtomicReference<>("foo");
// WHEN
AssertionError assertionError = expectAssertionError(() -> assertThat(actual).hasNullValue());
// THEN
then(assertionError).hasMessage(shouldHaveValue(actual, null).create());
}
}

0 comments on commit 0194172

Please sign in to comment.