---
# System prepended metadata

title: TGBOJ - Test cases syntax

---

# Cú pháp mới cho input/output mẫu của test case trong đề bài markdown trên nền tảng TGBOJ

Author: Đoàn Ngọc Bình Minh

## Sự khác biệt với input/ouput mẫu trước đó
- Lúc trước, input/output của đề bài được biễu diễn dưới dạng code-block của markdown.

<img src="https://hackmd.io/_uploads/r1Mx7TVnp.png" />

- Bây giờ, TGBOJ đã hỗ trợ trình chiếu test mẫu trực quan và rõ ràng hơn.

![image](https://hackmd.io/_uploads/Hy1ZNT426.png)

## Cú pháp cho giao diện test mẫu mới của TGBOJ
- Để có thể biễu diễn test mẫu trực quan hơn qua giao diện mới. Cú pháp của giao diện này được thể hiện qua các cặp thẻ `<testlist>`, `<test>`, `<inp>`, `<out>`, `<note>` được tích hợp ngay bên trong file markdown của đề bài.
- Định nghĩa các cặp thẻ:
    - `<testlist>` là cặp thẻ bao hàm tất cả các test mẫu. Một file markdown đề bài chỉ được phép có một cặp thẻ `<testlist>`, cặp thẻ này sẽ bao hàm các thẻ `<test>`.
    - `<test>` là cặp thẻ xác định một bộ test. Cặp thẻ này có thể có xuất hiện nhiều lần, nhưng chỉ được phép xuất hiện bên trong cặp thẻ `<testlist>`.
    - Các thẻ `<inp>`, `<out>`, `<note>` là các thẻ thể hiện input, output và note cho test case đó. Các thẻ này chỉ được phép xuất hiện bên trong thẻ `<test>` và không bắt buộc phải có. Ví dụ như một test case chỉ có input và output, thì không cần thêm thẻ `<note>` vào. Với những bài không có input hoặc output, thẻ `<inp>` hoặc `<out>` cũng có thể không cần xuất hiện.
- Cấu trúc của một bộ test mẫu sẽ như sau:
```
<testlist> // đánh dấu bộ test
    <test> // test số 1
        <inp>
Input của test 1
        </inp>
        
        <out>
Output của test 1
        </out>
        
        <note>
Note của test 1
        </note>
    </test>
    
    <test> // test số 2
        <inp>
Input của test 2
        </inp>
        
        <out>
Output của test 2
        </out>
    </test> 
</testlist>
```
![image](https://hackmd.io/_uploads/HJA4na4hT.png)

## Ví dụ một đề bài markdown với giao diện test mẫu mới
- Đoạn markdown sau được lấy từ bài [A Plus B](https://oj.giftedbat.edu.vn/problem/aplusb).
- ![image](https://hackmd.io/_uploads/rJwVp6Nh6.png)
- ![image](https://hackmd.io/_uploads/B1dDaTVhp.png)
