// Path: src/main/java/love/sola/netsupport/enums/ISP.java
// public enum ISP {
// 
//     TELECOM(1, "^1[3|4|5|6|7|8|9][0-9]{9}$"),
//     UNICOM(2, "^\\w+([-+.]\\w+)*@16900\\.gd"),
//     CHINAMOBILE(3, "^1[3|4|5|6|7|8|9][0-9]{9}@139\\.gd$"),
//     OTHER(4, ".*"),
//     ;
// 
//     private static final Map<String, ISP> NAME_MAP = new HashMap<>();
//     private static final Map<Integer, ISP> ID_MAP = new HashMap<>();
// 
//     static {
//         for (ISP type : values()) {
//             if (type.name != null) {
//                 NAME_MAP.put(type.name.toLowerCase(), type);
//             }
//             if (type.id > 0) {
//                 ID_MAP.put(type.id, type);
//             }
//         }
//     }
// 
//     public final int id;
//     public final String name;
//     public final String accountRegex;
// 
//     ISP(int id, String accountRegex) {
//         this.id = id;
//         this.name = lang("ISP_" + name());
//         this.accountRegex = accountRegex;
//     }
// 
//     public static ISP fromName(String name) {
//         if (name == null) {
//             return null;
//         }
//         return NAME_MAP.get(name.toLowerCase());
//     }
// 
//     public static ISP fromId(int id) {
//         return ID_MAP.get(id);
//     }
// 
//     @Override
//     public String toString() {
//         return name;
//     }
// 
// }


import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializer;
import org.junit.Test;
import java.util.Date;
import love.sola.netsupport.enums.ISP;
package love.sola.netsupport.util;





/**
 * @author Sola {@literal <dev@sola.love>}
 */
public class GsonTest {

    @Test
    public void testJsonDate() {
        Gson gson = new GsonBuilder()
                .registerTypeAdapter(Date.class, (JsonDeserializer<Date>) (json, typeOfT, context) -> new Date(json.getAsJsonPrimitive().getAsLong()))
                .registerTypeAdapter(Date.class, (JsonSerializer<Date>) (src, typeOfSrc, context) -> new JsonPrimitive(src.getTime()))
// Path: src/main/java/love/sola/netsupport/enums/ISP.java
// public enum ISP {
// 
//     TELECOM(1, "^1[3|4|5|6|7|8|9][0-9]{9}$"),
//     UNICOM(2, "^\\w+([-+.]\\w+)*@16900\\.gd"),
//     CHINAMOBILE(3, "^1[3|4|5|6|7|8|9][0-9]{9}@139\\.gd$"),
//     OTHER(4, ".*"),
//     ;
// 
//     private static final Map<String, ISP> NAME_MAP = new HashMap<>();
//     private static final Map<Integer, ISP> ID_MAP = new HashMap<>();
// 
//     static {
//         for (ISP type : values()) {
//             if (type.name != null) {
//                 NAME_MAP.put(type.name.toLowerCase(), type);
//             }
//             if (type.id > 0) {
//                 ID_MAP.put(type.id, type);
//             }
//         }
//     }
// 
//     public final int id;
//     public final String name;
//     public final String accountRegex;
// 
//     ISP(int id, String accountRegex) {
//         this.id = id;
//         this.name = lang("ISP_" + name());
//         this.accountRegex = accountRegex;
//     }
// 
//     public static ISP fromName(String name) {
//         if (name == null) {
//             return null;
//         }
//         return NAME_MAP.get(name.toLowerCase());
//     }
// 
//     public static ISP fromId(int id) {
//         return ID_MAP.get(id);
//     }
// 
//     @Override
//     public String toString() {
//         return name;
//     }
// 
// }


// Path: src/test/java/love/sola/netsupport/util/GsonTest.java
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializer;
import org.junit.Test;
import java.util.Date;
import love.sola.netsupport.enums.ISP;

package love.sola.netsupport.util;





/**
 * @author Sola {@literal <dev@sola.love>}
 */
public class GsonTest {

    @Test
    public void testJsonDate() {
        Gson gson = new GsonBuilder()
                .registerTypeAdapter(Date.class, (JsonDeserializer<Date>) (json, typeOfT, context) -> new Date(json.getAsJsonPrimitive().getAsLong()))
                .registerTypeAdapter(Date.class, (JsonSerializer<Date>) (src, typeOfSrc, context) -> new JsonPrimitive(src.getTime()))
                .registerTypeAdapter(ISP.class, (JsonDeserializer<ISP>) (json, typeOfT, context) -> ISP.fromId(json.getAsJsonPrimitive().getAsInt()))