/**
 * 指示書AY §3 表6（`lib/ds-logs/file-name.ts` の `exportFileName(serial, now)`）。
 * ブリーフ §5 と監督判断 第2ラウンドから本書で具体化。★P1・P2 の行は §11 Q14・Q15 の採用で確定★。
 *
 * | #  | 入力                                    | 期待                                  |
 * | N1 | DS-002・2026-10-19T12:34:56+09:00       | DS-002_logs_20261019-123456.zip       |
 * | N2 | 同じ瞬間を 2026-10-19T03:34:56Z で      | 同上（JST）                           |
 * | N3 | 2026-10-19T15:00:00Z                    | …_20261020-000000.zip（日付が変わる） |
 * | N4 | シリアル `DS 002/"x"`                   | DS_002__x__logs_….zip（D23）          |
 */
import { describe, expect, it } from "vitest";
import { exportFileName } from "@/lib/ds-logs/file-name";

describe("exportFileName() — 表6", () => {
  it.each<[string, string, string, string]>([
    ["N1", "DS-002", "2026-10-19T12:34:56+09:00", "DS-002_logs_20261019-123456.zip"],
    ["N2 同じ瞬間を Z で（JST で名付ける）", "DS-002", "2026-10-19T03:34:56Z", "DS-002_logs_20261019-123456.zip"],
    ["N3 日付が変わる", "DS-002", "2026-10-19T15:00:00Z", "DS-002_logs_20261020-000000.zip"],
    ["N4 [A-Za-z0-9._-] 以外は _", 'DS 002/"x"', "2026-10-19T12:34:56+09:00", "DS_002__x__logs_20261019-123456.zip"],
  ])("%s", (_label, serial, nowIso, expected) => {
    expect(exportFileName(serial, new Date(nowIso))).toBe(expected);
  });
});
