ADT 계약

스택과 큐는 구현 전에 계약 테스트 우선 고정

LIFO와 FIFO는 라이브러리 이름이 아니라 입력 순서와 출력 순서가 지키는 약속입니다.

stack

push 뒤 pop

1, 2, 3을 넣으면 3, 2, 1 순서로 나와야 합니다.

queue

enqueue 뒤 dequeue

1, 2, 3을 넣으면 1, 2, 3 순서로 나와야 합니다.

empty

빈 구조 정책

예외, -1, None 중 하나를 문제 요구와 맞춰 고정합니다.

capacity

용량 제한 정책

가득 찼을 때 거절할지 오래된 값을 버릴지 먼저 정합니다.

계약 테스트

같은 입력을 넣고 출력 순서만 비교하면 구현 교체 버그가 드러납니다.

실패 테스트

빈 pop과 빈 dequeue는 런타임마다 다르게 터지므로 명시 테스트로 잡습니다.