package com.tencent.qian.webview;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

/**
 * 渲染进程崩溃恢复 URL 优先级单测（P3）。
 *
 * <p>验证 {@link TencentQianWebViewActivity#resolveRecoveryUrl} 的优先级：
 * currentUrl（有效） &gt; lastVisitedUrl（崩溃前当前页） &gt; initialUrl（首页兜底）。
 * 与 Kotlin 版 RecoveryUrlResolveTest 同一组用例。
 */
public class RecoveryUrlResolveTest {

    @Test
    public void currentUrlValid_preferred() {
        // 崩溃后 WebView.url 仍有效 → 直接用它（最精准）
        String url = TencentQianWebViewActivity.resolveRecoveryUrl(
                "https://x/page3", "https://x/page2", "https://x/home");
        assertEquals("https://x/page3", url);
    }

    @Test
    public void currentUrlNull_fallsBackToLastVisited() {
        // 崩溃后 url 为 null → 回退到崩溃前记录的当前页（而非首页）
        String url = TencentQianWebViewActivity.resolveRecoveryUrl(
                null, "https://x/page2", "https://x/home");
        assertEquals("https://x/page2", url);
    }

    @Test
    public void currentUrlBlank_fallsBackToLastVisited() {
        // url 为 about:blank（销毁残留）→ 同样回退到 lastVisitedUrl
        String url = TencentQianWebViewActivity.resolveRecoveryUrl(
                "about:blank", "https://x/page2", "https://x/home");
        assertEquals("https://x/page2", url);
    }

    @Test
    public void currentAndLastEmpty_fallsBackToInitial() {
        // 崩溃发生在首页加载完成前（无 PageStarted 记录）→ 兜底初始 URL
        String url = TencentQianWebViewActivity.resolveRecoveryUrl(
                null, "", "https://x/home");
        assertEquals("https://x/home", url);
    }

    @Test
    public void allEmpty_returnsEmpty() {
        // 全空 → 返回空串（调用方据此 finish 关闭容器）
        String url = TencentQianWebViewActivity.resolveRecoveryUrl(null, "", null);
        assertEquals("", url);
    }
}
