Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
9eda440
docs(README) write develop plan
Glyph8 Oct 29, 2024
268c5b8
feat(Console) 필수 입출력 작성
Glyph8 Oct 30, 2024
1266f5b
feat(lottoNumber) 로또 번호 생성 기능 추가
Glyph8 Oct 30, 2024
95394e7
feat(Lotto.js) 로또 번호 오름차순 정렬 및 출력 기능 추가
Glyph8 Oct 30, 2024
fa6436a
test(lottoNumber) Test용 로또 번호 목록 생성
Glyph8 Oct 31, 2024
1cca4f7
docs(README) 로또 당첨 기능 구현 목표를 세분화함.
Glyph8 Oct 31, 2024
cc6945a
feat(Lotto.js) 로또 일치 숫자 개수 추출 기능추가
Glyph8 Nov 1, 2024
9c024a2
docs(README): 구현단위 축소, 순서 재정렬
Glyph8 Nov 3, 2024
2b98860
feat(Lotto.js): 보너스 번호 당첨확인 기능 추가
Glyph8 Nov 3, 2024
804c8ce
feat(result) 당첨 내역 출력 기능 추가
Glyph8 Nov 4, 2024
56d7e68
feat(calRevenueRate) 총 수익률을 계산하여 출력하는 기능 추가
Glyph8 Nov 4, 2024
b1c089a
feat(input) 적절한 입력 외 에러처리 기능추가
Glyph8 Nov 4, 2024
b9f8af0
fix(input) 누락된 입력 에러처리 기능 추가
Glyph8 Nov 4, 2024
d832da1
docs(README) 누락된 요구사항 목표 추가
Glyph8 Nov 4, 2024
40f102f
fix(winPrice) 당첨금 처리 실수로 잘못된 값 계산결과문제 해결
Glyph8 Nov 4, 2024
7d82a07
fix(output) 테스트 출력과 완전 일치하도록 출력수정
Glyph8 Nov 4, 2024
e3bfc71
feat(input, ERROR) 잘못된 입력 시, 다시 입력받는 기능 추가
Glyph8 Nov 4, 2024
c8d0f3b
test(LottoTest.js) 로또의 여러 경우에 대한 테스트 코드 작성
Glyph8 Nov 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1 +1,63 @@
# javascript-lotto-precourse

## 필수 입출력 작성하기
입력 : 로또 구입 금액, 당첨번호, 보너스 번호

출력 : 각 항목 입력 안내


## 로또 번호 생성 기능 추가
로또 구입 금액을 전부 사용하여 1000원짜리 로또를 구매한 횟수만큼 로또 번호를 생성한다.
이때의 로또 번호는 1~45의 숫자 6개를 중복없이 뽑는다.


## 로또 번호 오름차순 정렬 및 출력 기능 추가
랜덤하게 생성된 로또 번호들을 오름차순으로 정렬하여 출력하는 기능 추가
ex) [8, 21, 23, 41, 42, 43]


## Test용 로또 번호 목록 생성
로또 번호와 관련된 기능을 테스트 하기 위한 번호를 미리 설정해둔다.


## 당첨 여부 확인 기능 추가
입력한 당첨번호와 생성한 로또 번호를 매칭하여 5등 이상 당첨 여부 확인 기능추가


## 로또의 일치 숫자 개수 추출 기능 추가
6자리 숫자들 중 당첨숫자와 일치하는 숫자들의 개수를 추출하여 반환하는 함수를 작성


## 보너스 번호 당첨확인 기능 추가
보너스 번호에 대해서 당첨을 확인하는 기능을 추가한다.


## 당첨 내역 출력 기능 추가
당첨번호, 보너스 번호와 일치하는 번호 개수에 따른 당첨 내역 출력 기능 추가
> 1등: 6개 번호 일치 / 2,000,000,000원
>
> 2등: 5개 번호 + 보너스 번호 일치 / 30,000,000원
>
> 3등: 5개 번호 일치 / 1,500,000원
>
> 4등: 4개 번호 일치 / 50,000원
>
> 5등: 3개 번호 일치 / 5,000원


## 총 수익률을 계산하여 출력하는 기능 추가
로또 구입 금액, 당첨금액을 고려하여 계산하여 소수점 둘째 자리에서 반올림하여 나타낸다.


## 적절한 입력 외 에러처리 기능추가
> 로또 구입 금액 ; 1000원 단위여야 하고, 1000원으로 나누어 떨어져야한다.
>
> 당첨 번호 : 1~45의 중복되지 않는 숫자 6개를 쉼표로 구분하여 입력해야 한다.
>
> 보너스 번호 : 1~45의 중복되지 않는 숫자 1개이며, 당첨 번호와도 중복되지 않아야 한다.


## 잘못된 입력시 다시 입력받는 기능추가
Error 발생시키고, 다음 해당 지점부터 다시 입력받도록하는 기능을 추가한다.

## Jest 테스트 코드 작성하기
2 changes: 2 additions & 0 deletions __tests__/ApplicationTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,8 @@ describe("로또 테스트", () => {
});
});



test("예외 테스트", async () => {
await runException("1000j");
});
Expand Down
12 changes: 11 additions & 1 deletion __tests__/LottoTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,15 @@ describe("로또 클래스 테스트", () => {
}).toThrow("[ERROR]");
});

// TODO: 추가 기능 구현에 따른 테스트 코드 작성
test("로또 번호에 숫자가 아닌 문자가 있으면 예외가 발생한다.", () => {
expect(() => {
new Lotto(['a', 'b', 'c', 'd', 'e', 'f']);
}).toThrow("[ERROR]");
});

test("로또 번호에 숫자 범위가 1-45가 아닌 경우 예외가 발생한다.", () => {
expect(() => {
new Lotto([0, -1, 24, 48, 49, 52]);
}).toThrow("[ERROR]");
});
});
46 changes: 46 additions & 0 deletions coverage/clover.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1730724207370" clover="3.2.0">
<project timestamp="1730724207370" name="All files">
<metrics statements="37" coveredstatements="12" conditionals="18" coveredconditionals="7" methods="16" coveredmethods="7" elements="71" coveredelements="26" complexity="0" loc="37" ncloc="37" packages="1" files="1" classes="1"/>
<file name="Lotto.js" path="C:\Users\newdy\OneDrive\바탕 화면\wooaFreeCourse\javascript-lotto-7\src\Lotto.js">
<metrics statements="37" coveredstatements="12" conditionals="18" coveredconditionals="7" methods="16" coveredmethods="7"/>
<line num="8" count="2" type="stmt"/>
<line num="9" count="1" type="stmt"/>
<line num="10" count="1" type="stmt"/>
<line num="11" count="0" type="stmt"/>
<line num="12" count="0" type="stmt"/>
<line num="16" count="2" type="cond" truecount="2" falsecount="0"/>
<line num="17" count="1" type="stmt"/>
<line num="22" count="1" type="stmt"/>
<line num="23" count="5" type="cond" truecount="1" falsecount="1"/>
<line num="24" count="0" type="stmt"/>
<line num="26" count="5" type="stmt"/>
<line num="30" count="5" type="stmt"/>
<line num="31" count="30" type="cond" truecount="4" falsecount="0"/>
<line num="32" count="1" type="stmt"/>
<line num="38" count="0" type="stmt"/>
<line num="39" count="0" type="stmt"/>
<line num="40" count="0" type="stmt"/>
<line num="41" count="0" type="cond" truecount="0" falsecount="4"/>
<line num="42" count="0" type="stmt"/>
<line num="48" count="5" type="stmt"/>
<line num="52" count="0" type="stmt"/>
<line num="53" count="0" type="stmt"/>
<line num="54" count="0" type="stmt"/>
<line num="55" count="0" type="cond" truecount="0" falsecount="2"/>
<line num="56" count="0" type="stmt"/>
<line num="59" count="0" type="stmt"/>
<line num="63" count="0" type="stmt"/>
<line num="64" count="0" type="stmt"/>
<line num="65" count="0" type="cond" truecount="0" falsecount="2"/>
<line num="66" count="0" type="stmt"/>
<line num="70" count="0" type="stmt"/>
<line num="74" count="0" type="stmt"/>
<line num="75" count="0" type="stmt"/>
<line num="76" count="0" type="cond" truecount="0" falsecount="2"/>
<line num="77" count="0" type="stmt"/>
<line num="80" count="0" type="stmt"/>
<line num="84" count="0" type="stmt"/>
</file>
</project>
</coverage>
2 changes: 2 additions & 0 deletions coverage/coverage-final.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{"C:\\Users\\newdy\\OneDrive\\바탕 화면\\wooaFreeCourse\\javascript-lotto-7\\src\\Lotto.js": {"path":"C:\\Users\\newdy\\OneDrive\\바탕 화면\\wooaFreeCourse\\javascript-lotto-7\\src\\Lotto.js","statementMap":{"0":{"start":{"line":8,"column":4},"end":{"line":8,"column":28}},"1":{"start":{"line":9,"column":4},"end":{"line":9,"column":29}},"2":{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},"3":{"start":{"line":11,"column":4},"end":{"line":11,"column":35}},"4":{"start":{"line":12,"column":4},"end":{"line":12,"column":28}},"5":{"start":{"line":16,"column":4},"end":{"line":18,"column":5}},"6":{"start":{"line":17,"column":6},"end":{"line":17,"column":50}},"7":{"start":{"line":22,"column":4},"end":{"line":27,"column":6}},"8":{"start":{"line":23,"column":6},"end":{"line":25,"column":7}},"9":{"start":{"line":24,"column":8},"end":{"line":24,"column":52}},"10":{"start":{"line":26,"column":6},"end":{"line":26,"column":47}},"11":{"start":{"line":30,"column":4},"end":{"line":34,"column":6}},"12":{"start":{"line":31,"column":6},"end":{"line":33,"column":7}},"13":{"start":{"line":32,"column":8},"end":{"line":32,"column":55}},"14":{"start":{"line":38,"column":19},"end":{"line":38,"column":20}},"15":{"start":{"line":39,"column":19},"end":{"line":39,"column":21}},"16":{"start":{"line":40,"column":4},"end":{"line":44,"column":6}},"17":{"start":{"line":41,"column":6},"end":{"line":43,"column":7}},"18":{"start":{"line":42,"column":8},"end":{"line":42,"column":64}},"19":{"start":{"line":48,"column":4},"end":{"line":48,"column":42}},"20":{"start":{"line":48,"column":35},"end":{"line":48,"column":40}},"21":{"start":{"line":52,"column":14},"end":{"line":52,"column":19}},"22":{"start":{"line":53,"column":4},"end":{"line":58,"column":6}},"23":{"start":{"line":54,"column":6},"end":{"line":54,"column":39}},"24":{"start":{"line":55,"column":6},"end":{"line":57,"column":7}},"25":{"start":{"line":56,"column":8},"end":{"line":56,"column":19}},"26":{"start":{"line":59,"column":4},"end":{"line":59,"column":15}},"27":{"start":{"line":63,"column":22},"end":{"line":63,"column":23}},"28":{"start":{"line":64,"column":4},"end":{"line":68,"column":7}},"29":{"start":{"line":65,"column":6},"end":{"line":67,"column":7}},"30":{"start":{"line":66,"column":8},"end":{"line":66,"column":22}},"31":{"start":{"line":70,"column":4},"end":{"line":70,"column":23}},"32":{"start":{"line":74,"column":19},"end":{"line":74,"column":24}},"33":{"start":{"line":75,"column":4},"end":{"line":79,"column":7}},"34":{"start":{"line":76,"column":6},"end":{"line":78,"column":7}},"35":{"start":{"line":77,"column":8},"end":{"line":77,"column":24}},"36":{"start":{"line":80,"column":4},"end":{"line":80,"column":20}},"37":{"start":{"line":84,"column":4},"end":{"line":84,"column":25}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":7,"column":2},"end":{"line":7,"column":3}},"loc":{"start":{"line":7,"column":23},"end":{"line":13,"column":3}},"line":7},"1":{"name":"(anonymous_1)","decl":{"start":{"line":21,"column":2},"end":{"line":21,"column":3}},"loc":{"start":{"line":21,"column":25},"end":{"line":28,"column":3}},"line":21},"2":{"name":"(anonymous_2)","decl":{"start":{"line":22,"column":16},"end":{"line":22,"column":17}},"loc":{"start":{"line":22,"column":30},"end":{"line":27,"column":5}},"line":22},"3":{"name":"(anonymous_3)","decl":{"start":{"line":29,"column":2},"end":{"line":29,"column":3}},"loc":{"start":{"line":29,"column":46},"end":{"line":35,"column":3}},"line":29},"4":{"name":"(anonymous_4)","decl":{"start":{"line":30,"column":16},"end":{"line":30,"column":17}},"loc":{"start":{"line":30,"column":30},"end":{"line":34,"column":5}},"line":30},"5":{"name":"(anonymous_5)","decl":{"start":{"line":37,"column":2},"end":{"line":37,"column":3}},"loc":{"start":{"line":37,"column":27},"end":{"line":45,"column":3}},"line":37},"6":{"name":"(anonymous_6)","decl":{"start":{"line":40,"column":16},"end":{"line":40,"column":17}},"loc":{"start":{"line":40,"column":23},"end":{"line":44,"column":5}},"line":40},"7":{"name":"(anonymous_7)","decl":{"start":{"line":47,"column":2},"end":{"line":47,"column":3}},"loc":{"start":{"line":47,"column":21},"end":{"line":49,"column":3}},"line":47},"8":{"name":"(anonymous_8)","decl":{"start":{"line":48,"column":27},"end":{"line":48,"column":28}},"loc":{"start":{"line":48,"column":35},"end":{"line":48,"column":40}},"line":48},"9":{"name":"(anonymous_9)","decl":{"start":{"line":51,"column":2},"end":{"line":51,"column":3}},"loc":{"start":{"line":51,"column":33},"end":{"line":60,"column":3}},"line":51},"10":{"name":"(anonymous_10)","decl":{"start":{"line":53,"column":19},"end":{"line":53,"column":20}},"loc":{"start":{"line":53,"column":29},"end":{"line":58,"column":5}},"line":53},"11":{"name":"(anonymous_11)","decl":{"start":{"line":62,"column":2},"end":{"line":62,"column":3}},"loc":{"start":{"line":62,"column":35},"end":{"line":71,"column":3}},"line":62},"12":{"name":"(anonymous_12)","decl":{"start":{"line":64,"column":32},"end":{"line":64,"column":33}},"loc":{"start":{"line":64,"column":45},"end":{"line":68,"column":5}},"line":64},"13":{"name":"(anonymous_13)","decl":{"start":{"line":73,"column":2},"end":{"line":73,"column":3}},"loc":{"start":{"line":73,"column":22},"end":{"line":81,"column":3}},"line":73},"14":{"name":"(anonymous_14)","decl":{"start":{"line":75,"column":22},"end":{"line":75,"column":23}},"loc":{"start":{"line":75,"column":29},"end":{"line":79,"column":5}},"line":75},"15":{"name":"(anonymous_15)","decl":{"start":{"line":83,"column":2},"end":{"line":83,"column":3}},"loc":{"start":{"line":83,"column":13},"end":{"line":85,"column":3}},"line":83}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":4},"end":{"line":18,"column":5}},"type":"if","locations":[{"start":{"line":16,"column":4},"end":{"line":18,"column":5}},{"start":{},"end":{}}],"line":16},"1":{"loc":{"start":{"line":23,"column":6},"end":{"line":25,"column":7}},"type":"if","locations":[{"start":{"line":23,"column":6},"end":{"line":25,"column":7}},{"start":{},"end":{}}],"line":23},"2":{"loc":{"start":{"line":31,"column":6},"end":{"line":33,"column":7}},"type":"if","locations":[{"start":{"line":31,"column":6},"end":{"line":33,"column":7}},{"start":{},"end":{}}],"line":31},"3":{"loc":{"start":{"line":31,"column":9},"end":{"line":31,"column":48}},"type":"binary-expr","locations":[{"start":{"line":31,"column":9},"end":{"line":31,"column":23}},{"start":{"line":31,"column":27},"end":{"line":31,"column":48}}],"line":31},"4":{"loc":{"start":{"line":41,"column":6},"end":{"line":43,"column":7}},"type":"if","locations":[{"start":{"line":41,"column":6},"end":{"line":43,"column":7}},{"start":{},"end":{}}],"line":41},"5":{"loc":{"start":{"line":41,"column":9},"end":{"line":41,"column":37}},"type":"binary-expr","locations":[{"start":{"line":41,"column":9},"end":{"line":41,"column":21}},{"start":{"line":41,"column":25},"end":{"line":41,"column":37}}],"line":41},"6":{"loc":{"start":{"line":55,"column":6},"end":{"line":57,"column":7}},"type":"if","locations":[{"start":{"line":55,"column":6},"end":{"line":57,"column":7}},{"start":{},"end":{}}],"line":55},"7":{"loc":{"start":{"line":65,"column":6},"end":{"line":67,"column":7}},"type":"if","locations":[{"start":{"line":65,"column":6},"end":{"line":67,"column":7}},{"start":{},"end":{}}],"line":65},"8":{"loc":{"start":{"line":76,"column":6},"end":{"line":78,"column":7}},"type":"if","locations":[{"start":{"line":76,"column":6},"end":{"line":78,"column":7}},{"start":{},"end":{}}],"line":76}},"s":{"0":2,"1":1,"2":1,"3":0,"4":0,"5":2,"6":1,"7":1,"8":5,"9":0,"10":5,"11":5,"12":30,"13":1,"14":0,"15":0,"16":0,"17":0,"18":0,"19":1,"20":5,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0},"f":{"0":2,"1":1,"2":5,"3":5,"4":30,"5":0,"6":0,"7":1,"8":5,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0},"b":{"0":[1,1],"1":[0,5],"2":[1,29],"3":[30,6],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"ec056de4f933c393990fa4f512bd06b3cd26866f"}
}
Loading