package com.example.catchTheLetters;

import com.example.catchTheLetters.controller.LevelController;
import com.example.catchTheLetters.entity.Level;
import com.example.catchTheLetters.service.LevelService;
import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

@SpringBootTest
class TestInsertLevel {

    @Resource
    private LevelController levelController;

    private final List<String> words = new ArrayList<>() {
        {
            add("apple");
            add("banana");
            add("cherry");
            add("date");
            add("elderberry");
            add("fig");
            add("grape");
            add("honeydew");
            add("imbe");
            add("jackfruit");
            add("kiwi");
            add("lemon");
            add("mango");
            add("nectarine");
            add("orange");
            add("papaya");
            add("quince");
            add("raspberry");
            add("strawberry");
            add("tangerine");
            add("ugli");
            add("vanilla");
            add("watermelon");
            add("ximenia");
            add("yuzu");
            add("zucchini");
        }
    };

    @Test
    void testInsertLevel() {
        // 存20个关卡
        for (int i = 0; i < 20; i++) {
            var type = new Random().nextInt(2);
            // 如果是1,则需要设置目标分数
            var targetScore = type == 1 ? new Random().nextInt(100) : null;
            // 如果是0,则单词列表5个就够,否则15个
            var wordList = new ArrayList<String>();
            for (int j = 0; j < (type == 0 ? 5 : 15); j++) {
                wordList.add(words.get(new Random().nextInt(words.size())));
            }
            // 时间全部设置为3分钟
            var level = new Level(Integer.toString(i), i, "Level " + i, type, 180000L, targetScore, wordList);

            levelController.create(level);
        }
    }

    @Test
    void insertALevel() {
        var type = new Random().nextInt(2);
        // 如果是1,则需要设置目标分数
        var targetScore = type == 1 ? new Random().nextInt(100) : null;
        // 如果是0,则单词列表5个就够,否则15个
        var wordList = new ArrayList<String>();
        for (int j = 0; j < (type == 0 ? 5 : 15); j++) {
            wordList.add(words.get(new Random().nextInt(words.size())));
        }
        // 时间全部设置为3分钟
        var level = new Level("20", 20, "Level 20", type, 180000L, targetScore, wordList);

        levelController.create(level);
    }
}