| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
김홍준 손님
|
올려짐: 2007년9월16일 7:09 주제: 한 .n파일에서 다른 파일의 내용을 사용하는 방법이 궁금합니다. |
|
|
숙제를 하면서 숙제 코드를 검사하기 위한 테스트 셋을 같이 만들고 있는데요 test1.n 파일에서 1.n 에 있는 merge 함수를 사용하기 위한 방법이 있는지요.
물론 인터프리터에서
| 코드: |
#use "1.n"
#use "test1.n"
|
같이 해도 되지만 그냥
과 같이 한번에 실행을 할 수 있는 방법이 있으면 좋겠습니다.
(물론 test1.n에 val _ = main() 으로 스타트업 루틴을 지정해 놓았습니다.) |
|
| 위로 |
|
 |
김진산
가입: 2006년 9월 13일 올린 글: 45
|
올려짐: 2007년9월17일 2:12 주제: 좋은 아이디어 네요. :) |
|
|
답변은 아니고, 관련 질문하나 드리면..
test1.n 에서 1.n 을 사용할 수 있게 된 후에,
nml test1.n 같이 테스트를 하게 된다면~
결과값을 볼 수 없지 않나요?
결과를 일일이 찍는 코드까지 작성하신건가요? @_@
아님, 다른 방법이 있는 건가요? |
|
| 위로 |
|
 |
정영범
가입: 2005년 9월 5일 올린 글: 167
|
올려짐: 2007년9월17일 14:18 주제: |
|
|
답변이 늦어서 죄송합니다.
다른 파일에 있는 함수를 사용하려면 모듈로 만들어 줘야 합니다.
만약 a.n에 merge function이 있고 b.n에 test set이 있다고 가정하면
a.n의 내용은
structure 모듈이름 =
struct
fun merge =
.....
end이렇게 모듈로 감싸줘야 합니다.
b.n에서 사용하려면
val input = ...
val _ = 모듈이름.merge input
이렇게 쓰셔야 합니다.
모듈이름은 영어로 쓸 경우 맨 첫글자는 대문자로 쓰세요.
컴파일 방법은 아래와 같습니다.
dreameye@ropas:~/class/PL07/hw1$ nmlc 1.n
dreameye@ropas:~/class/PL07/hw1$ nmlc test1.n
Error while linking test1.cmo: Reference to undefined global `1'
dreameye@ropas:~/class/PL07/hw1$ nmlc -o a.out 1.cmo test1.cmo |
|
| 위로 |
|
 |
김홍준
가입: 2007년 9월 16일 올린 글: 16
|
올려짐: 2007년9월17일 22:49 주제: 테스트요 |
|
|
위에분이 물어 보셔서 제가 작성해 놓은 간단한 테스트 프레임웍을 첨부 합니다.
마지막 7번 문제의 테스트 셋을 예제로 보여드립니다.
| 코드: |
val test_func = crazy2val
val test_data = [
(ONE NIL, 1),
(ZERO(ONE(MONE NIL)), -2),
(ONE(ZERO(ONE NIL)), 5),
(ONE(MONE(ZERO(MONE NIL))), -9)
]
fun test_run test_set func =
let fun test f item = f item.0 = item.1
in List.for_all (test func) test_set
end
val _ = print_endline (string_of_bool (test_run test_data test_func))
|
여기서 아래 2개의 정의는 문제에 상관없이 똑같이 복사하셔서 사용하면 되고요 테스트 하는 함수에 따라서 위에 test_func에 함수이름을 test_data에 (입력값, 예상결과값) 쌍의 테스트 셋 리스트를 넣어주면 됩니다. 인자 1개를 받는 함수면 어떤 함수든 테스트 가능합니다.
모든 테스트가 통과되면 true를 하나라도 테스트가 fail되면 false를 화면에 찍어줍니다.
위의 내용을 메인 소스에 뒤에 붙인 다음
nml 7.n 또는 인터프리터상에서 #use "7.n" 과 같이 실행 시킬 수 있고요 (숙제 제출시에는 주석처리 하세요~),
test7.n 처럼 따로 테스트 파일을 만들 경우 인터프리터 상에서
#use "7.n"
#use "test7.n"
이렇게 2줄로 실행 시킵니다.
일반 적인 unittest 테스트 프레임웍처럼 테스트가 fail될 경우 fail된 테스트 셋의 입력값, 기대값, 결과값을 출력하도록 만들어 보려고 했는데 nml에서 일반적인 데이터 타입의 값을 화면에 출력하는 방법을 모르겠네요. |
|
| 위로 |
|
 |
정영범
가입: 2005년 9월 5일 올린 글: 167
|
올려짐: 2007년9월18일 10:14 주제: |
|
|
김홍준 학생 감사합니다.  |
|
| 위로 |
|
 |
|