Advertisement
pakuula

Untitled

Feb 10th, 2021
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.37 KB | None | 0 0
  1. package org.example.query;
  2.  
  3. import static org.junit.jupiter.api.Assertions.*;
  4.  
  5. import java.util.HashMap;
  6. import java.util.Map;
  7.  
  8. import org.junit.jupiter.api.Test;
  9.  
  10. class TestSerializer {
  11.     public static class TestData {
  12.         @QueryField
  13.         public String name; // *
  14.         @QueryField(required = false)
  15.         public Integer age; // Не обязательно
  16.         @QueryField(name = "gender", required = false)
  17.         public String sex; // Не обязательно
  18.     }
  19.    
  20.     // Вспомогательный метод для анализа результатов кодирования.
  21.     // Разбирает сгенерированную строку и раскладывает пары "поле=значение" в Map.
  22.     public static Map<String, String> parseQuery(String query) {
  23.         HashMap<String, String> result = new HashMap<String, String>();
  24.         String[] elements = query.split("&");
  25.         for (String elt : elements) {
  26.             String[] pair = elt.split("=", 2);
  27.             result.put(pair[0], pair[1]);
  28.         }
  29.         return result;
  30.     }
  31.  
  32.     // Тест для вспомогательной функции. Для тестирования сериализатора не требуется.
  33.     // @Test
  34.     void test_parseQuery() {
  35.         String sample = "name=John&age=23";
  36.         Map<String, String> map = parseQuery(sample);
  37.        
  38.         assertTrue(map.containsKey("age"));
  39.         assertTrue(map.containsKey("name"));
  40.        
  41.         assertEquals("John", map.get("name"));
  42.         assertEquals("23", map.get("age"));
  43.     }
  44.  
  45.     // Тест для сериализатора с одним отсуствующим необязательным полем.
  46.     @Test
  47.     void test_serialize() throws SerializerException {
  48.         TestData sample = new TestData();
  49.         sample.age = 23;
  50.         sample.name = "John";
  51.        
  52.         String actual = Serializer.buildQuery(sample);
  53.        
  54.         Map<String, String> data = parseQuery(actual);
  55.        
  56.         assertTrue(data.containsKey("age"));
  57.         assertTrue(data.containsKey("name"));
  58.         // Проверяем, что других полей нет.
  59.         assertEquals(2, data.keySet().size());
  60.        
  61.         assertEquals("John", data.get("name"));
  62.         assertEquals("23", data.get("age"));
  63.        
  64.     }
  65.    
  66.     // Тест для сериализатора, когда у поля есть специальное имя
  67.     @Test
  68.     void test_serializeCustomName() throws SerializerException {
  69.         TestData sample = new TestData();
  70.         sample.age = 23;
  71.         sample.name = "John";
  72.         sample.sex = "M";
  73.        
  74.         String actual = Serializer.buildQuery(sample);
  75.        
  76.         Map<String, String> data = parseQuery(actual);
  77.        
  78.         assertTrue(data.containsKey("age"));
  79.         assertTrue(data.containsKey("name"));
  80.         assertTrue(data.containsKey("gender"));
  81.         assertEquals(3, data.keySet().size());
  82.        
  83.         assertEquals("John", data.get("name"));
  84.         assertEquals("23", data.get("age"));
  85.         assertEquals("M", data.get("gender"));
  86.        
  87.     }
  88.    
  89.     // Тест с отсутствующим обязательным полем.
  90.     // Проверяет, что выбрасывается исключение
  91.     @Test
  92.     void test_serializeMissingField() {
  93.         TestData sample = new TestData();
  94.         sample.age = 23;
  95.         // Missing required field
  96.         // sample.name = "John";
  97.         sample.sex = "M";
  98.        
  99.         try {
  100.             Serializer.buildQuery(sample);
  101.         } catch (SerializerException e) {
  102.             assertEquals("Required field is null", e.getMessage());
  103.             assertNull(e.getCause());
  104.             return;
  105.         }
  106.        
  107.         fail("Expected exception");
  108.        
  109.     }
  110. }
  111.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement