← 목록
기타 2026-06-17 4KB 읽기 4분

W1-5 크라우니c VM 골든 벡터 테스트 (2026-06-17)

요약

크라우니c VM (ISA729 TOAU 바이트코드 실행기)의 toau2c 변환 검증용 "golden vector" 3종 테스트 파일 완성.

생성 파일

1. tests/네이티브골든.한선 (1.0KB)

목적: toau2c 검증용 결정적 출력 (deterministic output)

영역: 산술·함수·문자열·배열·맵 종합

  • 산술: 10+7=17, 10-7=3, 10*6=60, 10/5=2, 10%3=1
  • 3진 균형 나눗셈: 7/3=2, 7%3=-1, 8/3=3 (v10.0 자연반올림)
  • 함수: 제곱(5)=25, 제곱(10)=100
  • 문자열: msg+"42"="결과: 42" (자동 연결)
  • 배열: 길이, 인덱싱, 설정, 추가
  • 맵: 생성, 맵넣어, 맵꺼내
EXPECT 라인: 23개 테스트 케이스: 산술 8개, 함수 2개, 문자열 1개, 배열 8개, 맵 2개, 수학함수 2개

2. tests/맵리사이즈.한선 (661B)

목적: 맵의 내부 grow 메커니즘 검증 (v10.3 729→2187 확장 가능)

시나리오:

  • 800개 키 삽입 (k0부터 k799)
  • 특정 지점 검증: k0, k400, k799 (시작, 중간, 끝)
  • 재접근 검증 (해시 리바이재션 후 coherence)
  • 추가 샘플 검증: k100, k300, k500
EXPECT 라인: 9개 설명: 3^6=729 경고는 무방 (growable이므로)

3. tests/문자열캡.한선 (1.2KB)

목적: 큰 문자열 누적 후 글자수 확인 (VM 65535B 하드캡 경계)

영역:

  • 작은 문자열: 1KB 누적 → 글자수=1000
  • 중간: 10KB 누적 → 글자수=10000
  • UTF-8 한글: "가" 100개 → 글자수=100
  • 혼합: ASCII 100 + 한글 100 → 글자수=200
  • 특수/공백: 50개 → 글자수=50, 25개 → 글자수=25
  • 결합: "Hello" + " " + "World" → 글자수=11
EXPECT 라인: 9개 검증: 각 단계에서 반복문으로 누적, 최종 글자수 검증

기술 상세

테스트 형식 규칙

; EXPECT: <기대값>     # 순차 출력과 1:1 매칭
<한선씨 코드>
출력값(...)            # 각 출력값이 하나의 EXPECT와 일치

규칙:

  • EXPECT 없는 테스트는 SKIP
  • 전체 PASS → 종료코드 0 / FAIL → 1
  • 회귀실행.sh로 자동 검증 (EXPECT 순서 대조)

코드 특징

  • 모든 코드는 고수준 한선씨 (hanseonc_high 컴파일)
  • 한글 키워드 유지 (번역금지)
  • 3진 균형 나눗셈 v10.0 동작 검증
  • 배열/맵 API 종합 커버

알려진 제약

  • hanseonc_high 컴파일러 버그: 일부 복잡한 조건문/루프 조합 시 무한 루프 TOAU 생성
  • 따라서 본 테스트는 조건문/복잡 루프를 최소화 → 순수 산술/함수/자료구조 중심
  • 루프 테스트는 맵리사이즈.한선 의 반복문에 한정 (단순 누적용)

검증 방법

bashcd /Users/ef/CrownyOS/crownyc

# 개별 테스트 실행
./hanseonc_high tests/네이티브골든.한선 > /tmp/golden.toau 2>/dev/null
./crownyc run /tmp/golden.toau 2>&1

# 전체 회귀 실행 (자동 EXPECT 검증)
tests/회귀실행.sh

파일 위치

/Users/ef/CrownyOS/crownyc/tests/
├── 네이티브골든.한선          (산술/함수/자료구조 종합)
├── 맵리사이즈.한선            (맵 grow 검증)
└── 문자열캡.한선              (UTF-8 누적 검증)

다음 단계 (Optional)

  1. 조건문/루프 테스트: hanseonc_high 컴파일러 무한 루프 버그 수정 후 추가
  2. 예외 처리: 시도/오류 블록 테스트
  3. 셀 기반 테스트: 3축 셀, 셀연결 등
  4. 성능 벤치: 대규모 배열/맵 성능 측정

관련 문서

  • /Users/ef/CrownyOS/crownyc/CLAUDE.md — 전체 스펙
  • /Users/ef/CrownyOS/crownyc/tests/회귀실행.sh — 테스트 자동화 스크립트
  • 기존 테스트: tests/01_산술.한선 ~ tests/20_*.한선 (25+ 파일)