SWI-Prolog에서도 테스트를 쓰자.
11943 단어 PrologSWI-Prolog
소개
Prlog에서도 테스트 쓸 수 있으면 좋다고 생각하거나 하는 것입니다.
SWI-Prolog에서도 테스트를 작성할 수 있습니까?
대답은 예입니다. 라는 것으로 보고하는 대로입니다.
1. 우선 사용해 본다
예를 들어 다음과 같은 Prolog 술어 정의가 있습니다.
% fun1.pl
add(A,B,C) :- C is A+B.
mul(A,B,C) :- C is A*B.
이것을 테스트하려면 다음과 같이 작성하십시오.
% funtest1.pl
:- use_module(fun).
:- begin_tests(add).
test(add1_2) :- add(1,2,3).
test(add0_1) :- add(0,1,1).
:- end_tests(add).
:- begin_tests(mul).
test(mul1_2) :- mul(1,2,2).
test(mul0_1) :- mul(0,1,0).
test(mul10_20) :- mul(10,20,200).
:- end_tests(mul).
:- run_tests.
:- halt.
테스트 코드는 begin_tests/1
와 end_tests/1
로 씨로 씁니다. 이때 :-
를 잊지 말고 씁시다. 이것 쓰고 처음 움직이지 않고 고민 버렸습니다 w
실행하려면 run_tests를 실행하면 움직입니다.begin_tests
와 end_tests
의 이름은 같지 않으면 안됩니다.
꽤 깨끗하게 테스트를 쓸 수 있습니다.
테스트 실행은
$ swipl funtest.pl
% PL-Unit: add .. done
% PL-Unit: mul ... done
% All 5 tests passed
너무 쉽게?
2. 모듈을 전환하여 사용한다.
그럼 실제로 좀 더 복잡한 사용법을 해봅시다.
이전의 프로그램을 fun.pl이라는 이름으로 저장합니다.
:- module(fun, [add/3,mul/3]).
% fun.pl
add(A,B,C) :- C is A+B.
mul(A,B,C) :- C is A*B.
그런데 다른 버전의 구현을 만들기로 했다고 합시다.
:- module(fun2, [add/3,mul/3]).
% fun2.pl
add(A,B,C) :- C is A+B.
mul(A,B,C) :- C is A*B.
귀찮아서 같은 프로그램을 복사했을 뿐입니다만, 같은 테스트 프로그램으로 테스트 할 수 있으면 편리합니다.
그럴 때는, 커멘드 라인 인수를 보고 읽어들이는 모듈을 바꿀 수 있도록 하고 있습니다.
% funtest.pl
:- current_prolog_flag(argv, [M]),!,format('use ~w\n',[M]),use_module(M) ;
use_module(fun).
:- begin_tests(add).
test(add1_2) :- add(1,2,3).
test(add0_1) :- add(0,1,1).
:- end_tests(add).
:- begin_tests(mul).
test(mul1_2) :- mul(1,2,2).
test(mul0_1) :- mul(0,1,0).
test(mul10_20) :- mul(10,20,200).
:- end_tests(mul).
:- run_tests.
:- halt.
이렇게하면 기본적으로 fun.pl이 테스트됩니다.
$ swipl funtest.pl
% PL-Unit: add .. done
% PL-Unit: mul ... done
% All 5 tests passed
fun2.pl의 빗질을하고 싶을 때는 다음과 같이 인수를 전달하여 테스트 할 수 있습니다.
$ swipl funtest.pl fun2
use fun2
% PL-Unit: add .. done
% PL-Unit: mul ... done
% All 5 tests passed
3. Makefile을 쓰자.
Makefile 만들기
test: test1 test2
test1:
swipl funtest.pl
test2:
swipl funtest.pl fun2
등이라고 쓰면,
$ make test
swipl funtest.pl
% PL-Unit: add .. done
% PL-Unit: mul ... done
% All 5 tests passed
swipl funtest.pl fun2
use fun2
% PL-Unit: add .. done
% PL-Unit: mul ... done
% All 5 tests passed
로 정리해 테스트 할 수 있어 편리합니다.
3. 더 자세한 정보
SWI-Prolog Prolog Unit Tests에는 더 자세한 정보가 있습니다. 참고하십시오.
4. 정리
SWI-Prolog에서 테스트를 작성해 보았습니다.
이 기사의 프로그램은 다음에서 다운로드 할 수 있습니다.
htps : // 기 st. 기주 b. m / hsk / f712 a b7 4 400211557 a3 59 e d381f
참고
Prolog Unit Tests
Reference
이 문제에 관하여(SWI-Prolog에서도 테스트를 쓰자.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/h_sakurai/items/cb3e8bd0f91fc89d4f8d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
예를 들어 다음과 같은 Prolog 술어 정의가 있습니다.
% fun1.pl
add(A,B,C) :- C is A+B.
mul(A,B,C) :- C is A*B.
이것을 테스트하려면 다음과 같이 작성하십시오.
% funtest1.pl
:- use_module(fun).
:- begin_tests(add).
test(add1_2) :- add(1,2,3).
test(add0_1) :- add(0,1,1).
:- end_tests(add).
:- begin_tests(mul).
test(mul1_2) :- mul(1,2,2).
test(mul0_1) :- mul(0,1,0).
test(mul10_20) :- mul(10,20,200).
:- end_tests(mul).
:- run_tests.
:- halt.
테스트 코드는
begin_tests/1
와 end_tests/1
로 씨로 씁니다. 이때 :-
를 잊지 말고 씁시다. 이것 쓰고 처음 움직이지 않고 고민 버렸습니다 w실행하려면 run_tests를 실행하면 움직입니다.
begin_tests
와 end_tests
의 이름은 같지 않으면 안됩니다.꽤 깨끗하게 테스트를 쓸 수 있습니다.
테스트 실행은
$ swipl funtest.pl
% PL-Unit: add .. done
% PL-Unit: mul ... done
% All 5 tests passed
너무 쉽게?
2. 모듈을 전환하여 사용한다.
그럼 실제로 좀 더 복잡한 사용법을 해봅시다.
이전의 프로그램을 fun.pl이라는 이름으로 저장합니다.
:- module(fun, [add/3,mul/3]).
% fun.pl
add(A,B,C) :- C is A+B.
mul(A,B,C) :- C is A*B.
그런데 다른 버전의 구현을 만들기로 했다고 합시다.
:- module(fun2, [add/3,mul/3]).
% fun2.pl
add(A,B,C) :- C is A+B.
mul(A,B,C) :- C is A*B.
귀찮아서 같은 프로그램을 복사했을 뿐입니다만, 같은 테스트 프로그램으로 테스트 할 수 있으면 편리합니다.
그럴 때는, 커멘드 라인 인수를 보고 읽어들이는 모듈을 바꿀 수 있도록 하고 있습니다.
% funtest.pl
:- current_prolog_flag(argv, [M]),!,format('use ~w\n',[M]),use_module(M) ;
use_module(fun).
:- begin_tests(add).
test(add1_2) :- add(1,2,3).
test(add0_1) :- add(0,1,1).
:- end_tests(add).
:- begin_tests(mul).
test(mul1_2) :- mul(1,2,2).
test(mul0_1) :- mul(0,1,0).
test(mul10_20) :- mul(10,20,200).
:- end_tests(mul).
:- run_tests.
:- halt.
이렇게하면 기본적으로 fun.pl이 테스트됩니다.
$ swipl funtest.pl
% PL-Unit: add .. done
% PL-Unit: mul ... done
% All 5 tests passed
fun2.pl의 빗질을하고 싶을 때는 다음과 같이 인수를 전달하여 테스트 할 수 있습니다.
$ swipl funtest.pl fun2
use fun2
% PL-Unit: add .. done
% PL-Unit: mul ... done
% All 5 tests passed
3. Makefile을 쓰자.
Makefile 만들기
test: test1 test2
test1:
swipl funtest.pl
test2:
swipl funtest.pl fun2
등이라고 쓰면,
$ make test
swipl funtest.pl
% PL-Unit: add .. done
% PL-Unit: mul ... done
% All 5 tests passed
swipl funtest.pl fun2
use fun2
% PL-Unit: add .. done
% PL-Unit: mul ... done
% All 5 tests passed
로 정리해 테스트 할 수 있어 편리합니다.
3. 더 자세한 정보
SWI-Prolog Prolog Unit Tests에는 더 자세한 정보가 있습니다. 참고하십시오.
4. 정리
SWI-Prolog에서 테스트를 작성해 보았습니다.
이 기사의 프로그램은 다음에서 다운로드 할 수 있습니다.
htps : // 기 st. 기주 b. m / hsk / f712 a b7 4 400211557 a3 59 e d381f
참고
Prolog Unit Tests
Reference
이 문제에 관하여(SWI-Prolog에서도 테스트를 쓰자.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/h_sakurai/items/cb3e8bd0f91fc89d4f8d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
:- module(fun, [add/3,mul/3]).
% fun.pl
add(A,B,C) :- C is A+B.
mul(A,B,C) :- C is A*B.
:- module(fun2, [add/3,mul/3]).
% fun2.pl
add(A,B,C) :- C is A+B.
mul(A,B,C) :- C is A*B.
% funtest.pl
:- current_prolog_flag(argv, [M]),!,format('use ~w\n',[M]),use_module(M) ;
use_module(fun).
:- begin_tests(add).
test(add1_2) :- add(1,2,3).
test(add0_1) :- add(0,1,1).
:- end_tests(add).
:- begin_tests(mul).
test(mul1_2) :- mul(1,2,2).
test(mul0_1) :- mul(0,1,0).
test(mul10_20) :- mul(10,20,200).
:- end_tests(mul).
:- run_tests.
:- halt.
$ swipl funtest.pl
% PL-Unit: add .. done
% PL-Unit: mul ... done
% All 5 tests passed
$ swipl funtest.pl fun2
use fun2
% PL-Unit: add .. done
% PL-Unit: mul ... done
% All 5 tests passed
Makefile 만들기
test: test1 test2
test1:
swipl funtest.pl
test2:
swipl funtest.pl fun2
등이라고 쓰면,
$ make test
swipl funtest.pl
% PL-Unit: add .. done
% PL-Unit: mul ... done
% All 5 tests passed
swipl funtest.pl fun2
use fun2
% PL-Unit: add .. done
% PL-Unit: mul ... done
% All 5 tests passed
로 정리해 테스트 할 수 있어 편리합니다.
3. 더 자세한 정보
SWI-Prolog Prolog Unit Tests에는 더 자세한 정보가 있습니다. 참고하십시오.
4. 정리
SWI-Prolog에서 테스트를 작성해 보았습니다.
이 기사의 프로그램은 다음에서 다운로드 할 수 있습니다.
htps : // 기 st. 기주 b. m / hsk / f712 a b7 4 400211557 a3 59 e d381f
참고
Prolog Unit Tests
Reference
이 문제에 관하여(SWI-Prolog에서도 테스트를 쓰자.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/h_sakurai/items/cb3e8bd0f91fc89d4f8d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
SWI-Prolog에서 테스트를 작성해 보았습니다.
이 기사의 프로그램은 다음에서 다운로드 할 수 있습니다.
htps : // 기 st. 기주 b. m / hsk / f712 a b7 4 400211557 a3 59 e d381f
참고
Prolog Unit Tests
Reference
이 문제에 관하여(SWI-Prolog에서도 테스트를 쓰자.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/h_sakurai/items/cb3e8bd0f91fc89d4f8d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(SWI-Prolog에서도 테스트를 쓰자.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/h_sakurai/items/cb3e8bd0f91fc89d4f8d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)