/
Artem276
/
arch
Обзор
Документация
Войти
/
Artem276
/
arch
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/test/java/org/example/domain/ExchangeTest.java
43 строки
1 KB
Nazarova Ekaterina
1 commit
29 дек 2025, 11:43
29 дек 2025, 11:43
14775dd
Код
Авторство
О чём код?
package org.example.domain; import org.example.storage.ExchangeState; import org.example.storage.StateRepository; import org.junit.jupiter.api.Test; import java.util.Map; import static org.mockito.Mockito.*; import static org.junit.jupiter.api.Assertions.*; public class ExchangeTest { @Test void testUserBalanceChangeAfterTrade() throws Exception { StateRepository repo = mock(StateRepository.class); ExchangeState initialState = new ExchangeState(); initialState.users.put("alice", new User("alice", 1000, 0)); initialState.users.put("bob", new User("bob", 0, 1000)); when(repo.load()).thenReturn(initialState); Exchange ex = new Exchange(repo); ex.loadState(); Order buy = new Order("alice", "USD/EUR", OrderSide.BUY, 10, 100); Order sell = new Order("bob", "USD/EUR", OrderSide.SELL,10, 100); ex.placeOrder(sell); ex.placeOrder(buy); // Alice покупает USD за EUR assertEquals(1010, ex.getUserBalance("alice", "USD")); assertEquals(-1000, ex.getUserBalance("alice", "EUR")); // Bob продаёт USD, получает EUR assertEquals(-10, ex.getUserBalance("bob", "USD")); assertEquals(2000, ex.getUserBalance("bob", "EUR")); verify(repo, atLeastOnce()).save(any(ExchangeState.class)); } }