Skip to content

Commit

Permalink
Rename Assertion to Condition to reflect a changing state, use static…
Browse files Browse the repository at this point in the history
… factory methods
  • Loading branch information
shreyax committed Sep 5, 2024
1 parent 40c857a commit 8284f5d
Show file tree
Hide file tree
Showing 6 changed files with 71 additions and 33 deletions.
24 changes: 13 additions & 11 deletions src/test-support/java/com/lmax/solana4j/SolanaNodeDsl.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
import com.lmax.solana4j.api.AssociatedTokenAddress;
import com.lmax.solana4j.api.ProgramDerivedAddress;
import com.lmax.solana4j.api.PublicKey;
import com.lmax.solana4j.assertion.IsEqualToAssertion;
import com.lmax.solana4j.assertion.IsNotNullAssertion;
import com.lmax.solana4j.assertion.Condition;
import com.lmax.solana4j.assertion.Waiter;
import com.lmax.solana4j.domain.Sol;
import com.lmax.solana4j.domain.TestKeyPair;
Expand All @@ -29,6 +28,9 @@
import java.util.Optional;
import java.util.stream.Collectors;

import static com.lmax.solana4j.assertion.Condition.isEqualTo;
import static com.lmax.solana4j.assertion.Condition.isNotNull;
import static com.lmax.solana4j.assertion.Condition.isTrue;
import static com.lmax.solana4j.encoding.SolanaEncoding.deriveAssociatedTokenAddress;
import static com.lmax.solana4j.programs.SystemProgram.MINT_ACCOUNT_LENGTH;
import static com.lmax.solana4j.programs.SystemProgram.NONCE_ACCOUNT_LENGTH;
Expand Down Expand Up @@ -92,7 +94,7 @@ public void retrieveAddressLookupTable(final String... args)

final TestPublicKey account = testContext.data(TestDataType.TEST_PUBLIC_KEY).lookup(params.value("lookupTableAddress"));

final AccountInfo accountInfo = Waiter.waitFor(new IsNotNullAssertion<>(() -> solanaDriver.getAccountInfo(account)));
final AccountInfo accountInfo = Waiter.waitFor(isNotNull(() -> solanaDriver.getAccountInfo(account)));

final List<PublicKey> expectedAddresses = stream(params.values("addresses"))
.map(address -> testContext.data(TestDataType.TEST_KEY_PAIR).lookup(address).getSolana4jPublicKey())
Expand Down Expand Up @@ -163,7 +165,7 @@ public void waitForSlot(final String... args)
new RequiredArg("slot")
);

Waiter.waitFor(new IsEqualToAssertion<>(true, () -> solanaDriver.getSlot() > params.valueAsLong("slot")));
Waiter.waitFor(isTrue(() -> solanaDriver.getSlot() > params.valueAsLong("slot")));
}

public void createMintAccount(final String... args)
Expand Down Expand Up @@ -271,7 +273,7 @@ public void tokenBalance(final String... args)
final TestPublicKey address = testContext.data(TestDataType.TEST_PUBLIC_KEY).lookup(params.value("address"));
final String amount = params.value("amount");

Waiter.waitFor(new IsEqualToAssertion<>(amount, () -> solanaDriver.getTokenBalance(address.getPublicKeyBase58())));
Waiter.waitFor(isEqualTo(amount, () -> solanaDriver.getTokenBalance(address.getPublicKeyBase58())));
}

public void balance(final String... args)
Expand All @@ -284,7 +286,7 @@ public void balance(final String... args)
final TestPublicKey address = testContext.data(TestDataType.TEST_PUBLIC_KEY).lookup(params.value("address"));
final Sol sol = new Sol(params.valueAsBigDecimal("amountSol"));

Waiter.waitFor(new IsEqualToAssertion<>(sol.lamports(), () -> solanaDriver.getBalance(address.getPublicKeyBase58())));
Waiter.waitFor(isEqualTo(sol.lamports(), () -> solanaDriver.getBalance(address.getPublicKeyBase58())));
}

public void tokenTransfer(final String... args)
Expand Down Expand Up @@ -413,11 +415,11 @@ public void transfer(final String... args)
Waiter.waitFor(transactionFinalized(transactionSignature));
}

private IsNotNullAssertion<TransactionData> transactionFinalized(final String transactionSignature)
private Condition<TransactionData> transactionFinalized(final String transactionSignature)
{
// intermittency caused by block height not moving on to the next block before checking the transaction response ... it's a bit weird
waitForBlockHeight(solanaDriver.getBlockHeight() + 1);
return new IsNotNullAssertion<>(() -> solanaDriver.getTransactionResponse(transactionSignature).getTransaction());
return isNotNull(() -> solanaDriver.getTransactionResponse(transactionSignature).getTransaction());
}

public void createAssociatedTokenAddress(final String... args)
Expand Down Expand Up @@ -456,7 +458,7 @@ public void createAssociatedTokenAddress(final String... args)
addressLookupTables
);

Waiter.waitFor(new IsNotNullAssertion<>(() -> solanaDriver.getTransactionResponse(transactionSignature).getTransaction()));
Waiter.waitFor(isNotNull(() -> solanaDriver.getTransactionResponse(transactionSignature).getTransaction()));
}

public void maybeCreateAndExtendAddressLookupTable(final String... args)
Expand All @@ -483,11 +485,11 @@ public void maybeCreateAndExtendAddressLookupTable(final String... args)

private void waitForSlot(final long slot)
{
Waiter.waitFor(new IsEqualToAssertion<>(true, () -> solanaDriver.getSlot() > slot));
Waiter.waitFor(isTrue(() -> solanaDriver.getSlot() > slot));
}

private void waitForBlockHeight(final long blockHeight)
{
Waiter.waitFor(new IsEqualToAssertion<>(true, () -> solanaDriver.getBlockHeight() > blockHeight));
Waiter.waitFor(isTrue(() -> solanaDriver.getBlockHeight() > blockHeight));
}
}

This file was deleted.

35 changes: 35 additions & 0 deletions src/test-support/java/com/lmax/solana4j/assertion/Condition.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.lmax.solana4j.assertion;

import java.util.function.Supplier;

public abstract class Condition<T>
{
public abstract void check();

public abstract T getActual();

public static Condition<Boolean> isTrue(final Supplier<Boolean> actualSupplier)
{
return new IsEqualToCondition<>(true, actualSupplier);
}

public static Condition<Boolean> isFalse(final Supplier<Boolean> actualSupplier)
{
return new IsEqualToCondition<>(false, actualSupplier);
}

public static <S> Condition<S> isNotNull(final Supplier<S> actualSupplier)
{
return new IsNotEqualToCondition<>(null, actualSupplier);
}

public static <S> Condition<S> isEqualTo(final S expected, final Supplier<S> actualSupplier)
{
return new IsEqualToCondition<>(expected, actualSupplier);
}

public static <S> Condition<S> isNotEqualTo(final S notExpected, final Supplier<S> actualSupplier)
{
return new IsNotEqualToCondition<>(notExpected, actualSupplier);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,21 @@

import static org.assertj.core.api.Assertions.assertThat;

public class IsEqualToAssertion<T> extends Assertion<T>
class IsEqualToCondition<T> extends Condition<T>
{
private static final Logger LOGGER = LoggerFactory.getLogger(IsEqualToAssertion.class);
private static final Logger LOGGER = LoggerFactory.getLogger(IsEqualToCondition.class);

private final T expected;
private final Supplier<T> actualSupplier;

public IsEqualToAssertion(final T expected, final Supplier<T> actualSupplier)
IsEqualToCondition(final T expected, final Supplier<T> actualSupplier)
{
this.expected = expected;
this.actualSupplier = actualSupplier;
}

@Override
public void doAssert()
public void check()
{
try
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,34 @@

import static org.assertj.core.api.Assertions.assertThat;

public class IsNotNullAssertion<T> extends Assertion<T>
class IsNotEqualToCondition<T> extends Condition<T>
{
private static final Logger LOGGER = LoggerFactory.getLogger(IsNotNullAssertion.class);
private static final Logger LOGGER = LoggerFactory.getLogger(IsNotEqualToCondition.class);

private final T notExpected;
private final Supplier<T> actualSupplier;

public IsNotNullAssertion(final Supplier<T> actualSupplier)
IsNotEqualToCondition(final T notExpected, final Supplier<T> actualSupplier)
{
this.notExpected = notExpected;
this.actualSupplier = actualSupplier;
}

@Override
public void doAssert()
public void check()
{
try
{
final T actual = actualSupplier.get();
LOGGER.debug("Actual value {}.", actual);
assertThat(actual).isNotNull();
if (notExpected == null)
{
assertThat(actual).isNotNull();
}
else
{
assertThat(actual).isNotEqualTo(notExpected);
}
}
catch (final Exception e)
{
Expand Down
10 changes: 5 additions & 5 deletions src/test-support/java/com/lmax/solana4j/assertion/Waiter.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public Waiter withPollingInterval(final Duration pollingInterval)
return new Waiter(initialDelay, timeout, pollingInterval);
}

public <T> T waitForAssertion(final Assertion<T> assertion)
public <T> T waitForCondition(final Condition<T> condition)
{
final long endTimeMillis = System.currentTimeMillis() + timeout.toMillis();

Expand All @@ -46,8 +46,8 @@ public <T> T waitForAssertion(final Assertion<T> assertion)
{
try
{
assertion.doAssert();
return assertion.getActual();
condition.check();
return condition.getActual();
}
catch (final Throwable throwable)
{
Expand All @@ -63,8 +63,8 @@ public static Waiter waiter()
return DEFAULT_WAITER;
}

public static <T> T waitFor(final Assertion<T> assertion)
public static <T> T waitFor(final Condition<T> condition)
{
return waiter().waitForAssertion(assertion);
return waiter().waitForCondition(condition);
}
}

0 comments on commit 8284f5d

Please sign in to comment.