Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.example.query;
- import static org.junit.jupiter.api.Assertions.*;
- import java.util.HashMap;
- import java.util.Map;
- import org.junit.jupiter.api.Test;
- class TestSerializer {
- public static class TestData {
- @QueryField
- public String name; // *
- @QueryField(required = false)
- public Integer age; // Не обязательно
- @QueryField(name = "gender", required = false)
- public String sex; // Не обязательно
- }
- // Вспомогательный метод для анализа результатов кодирования.
- // Разбирает сгенерированную строку и раскладывает пары "поле=значение" в Map.
- public static Map<String, String> parseQuery(String query) {
- HashMap<String, String> result = new HashMap<String, String>();
- String[] elements = query.split("&");
- for (String elt : elements) {
- String[] pair = elt.split("=", 2);
- result.put(pair[0], pair[1]);
- }
- return result;
- }
- // Тест для вспомогательной функции. Для тестирования сериализатора не требуется.
- // @Test
- void test_parseQuery() {
- String sample = "name=John&age=23";
- Map<String, String> map = parseQuery(sample);
- assertTrue(map.containsKey("age"));
- assertTrue(map.containsKey("name"));
- assertEquals("John", map.get("name"));
- assertEquals("23", map.get("age"));
- }
- // Тест для сериализатора с одним отсуствующим необязательным полем.
- @Test
- void test_serialize() throws SerializerException {
- TestData sample = new TestData();
- sample.age = 23;
- sample.name = "John";
- String actual = Serializer.buildQuery(sample);
- Map<String, String> data = parseQuery(actual);
- assertTrue(data.containsKey("age"));
- assertTrue(data.containsKey("name"));
- // Проверяем, что других полей нет.
- assertEquals(2, data.keySet().size());
- assertEquals("John", data.get("name"));
- assertEquals("23", data.get("age"));
- }
- // Тест для сериализатора, когда у поля есть специальное имя
- @Test
- void test_serializeCustomName() throws SerializerException {
- TestData sample = new TestData();
- sample.age = 23;
- sample.name = "John";
- sample.sex = "M";
- String actual = Serializer.buildQuery(sample);
- Map<String, String> data = parseQuery(actual);
- assertTrue(data.containsKey("age"));
- assertTrue(data.containsKey("name"));
- assertTrue(data.containsKey("gender"));
- assertEquals(3, data.keySet().size());
- assertEquals("John", data.get("name"));
- assertEquals("23", data.get("age"));
- assertEquals("M", data.get("gender"));
- }
- // Тест с отсутствующим обязательным полем.
- // Проверяет, что выбрасывается исключение
- @Test
- void test_serializeMissingField() {
- TestData sample = new TestData();
- sample.age = 23;
- // Missing required field
- // sample.name = "John";
- sample.sex = "M";
- try {
- Serializer.buildQuery(sample);
- } catch (SerializerException e) {
- assertEquals("Required field is null", e.getMessage());
- assertNull(e.getCause());
- return;
- }
- fail("Expected exception");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement