-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
4 changed files
with
0 additions
and
149 deletions.
There are no files selected for viewing
25 changes: 0 additions & 25 deletions
25
C++_GoogleTest_VisualStudio2022/C++_GoogleTest_VisualStudio2022/Range.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,29 +1,4 @@ | ||
#include "pch.h" | ||
#include "Range.h" | ||
|
||
Range::Range(int lower, int upper) : lower(lower), upper(upper) | ||
{ | ||
if (lower > upper) { | ||
throw std::invalid_argument("lower must be less than upper"); | ||
} | ||
} | ||
|
||
int Range::getLower() | ||
{ | ||
return this->lower; | ||
} | ||
|
||
int Range::getUpper() | ||
{ | ||
return this->upper; | ||
} | ||
|
||
std::string Range::toString() | ||
{ | ||
return "[" + std::to_string(this->lower) + "," + std::to_string(this->upper) + "]"; | ||
} | ||
|
||
bool Range::contains(Range other) | ||
{ | ||
return (lower <= other.lower && other.lower <= upper) && (lower <= other.upper && other.upper <= upper); | ||
} |
44 changes: 0 additions & 44 deletions
44
C++_GoogleTest_VisualStudio2022/C++_GoogleTest_VisualStudio2022/Range.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,48 +1,4 @@ | ||
#pragma once | ||
|
||
#include <string> | ||
|
||
class Range | ||
{ | ||
private: | ||
int lower; | ||
int upper; | ||
|
||
public: | ||
Range(int lower, int upper); | ||
|
||
int getLower(); | ||
int getUpper(); | ||
std::string toString(); | ||
bool contains(Range other); | ||
}; | ||
|
||
class RangeBuilder { | ||
private: | ||
int m_lower; | ||
int m_upper; | ||
|
||
public: | ||
RangeBuilder() : m_lower(0), m_upper(0) | ||
{ | ||
|
||
} | ||
|
||
RangeBuilder& lower(int lower) | ||
{ | ||
this->m_lower = lower; | ||
return *this; | ||
} | ||
|
||
RangeBuilder& upper(int upper) | ||
{ | ||
this->m_upper = upper; | ||
return *this; | ||
} | ||
|
||
Range build() | ||
{ | ||
return Range(m_lower, m_upper); | ||
} | ||
}; | ||
|
66 changes: 0 additions & 66 deletions
66
C++_GoogleTest_VisualStudio2022/C++_GoogleTest_VisualStudio2022/range_test.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,68 +1,2 @@ | ||
#include "pch.h" | ||
#include "Range.h" | ||
|
||
namespace 整数閉区間オブジェクト { | ||
|
||
TEST(オブジェクト生成, 下端点と上端点を持つ) { | ||
Range sut = Range(3, 8); | ||
const auto lower = sut.getLower(); | ||
const auto upper = sut.getUpper(); | ||
EXPECT_EQ(3, lower); | ||
EXPECT_EQ(8, upper); | ||
} | ||
|
||
TEST(オブジェクト生成, ビルダーっぽく初期化する) { | ||
Range sut = RangeBuilder().lower(3).upper(8).build(); | ||
const auto lower = sut.getLower(); | ||
const auto upper = sut.getUpper(); | ||
EXPECT_EQ(3, lower); | ||
EXPECT_EQ(8, upper); | ||
} | ||
TEST(オブジェクト生成, 不正_上端点より下端点が大きい閉区間を作ることはできない) { | ||
EXPECT_THROW(Range(8, 3), std::invalid_argument); | ||
} | ||
|
||
TEST(文字列表現, 3と8の場合) { | ||
Range sut = RangeBuilder().lower(3).upper(8).build(); | ||
EXPECT_EQ("[3,8]", sut.toString()); | ||
} | ||
|
||
TEST(文字列表現, マイナス2と10の場合) { | ||
Range sut = RangeBuilder().lower(-2).upper(10).build(); | ||
EXPECT_EQ("[-2,10]", sut.toString()); | ||
} | ||
|
||
TEST(別の閉区間を完全に含むかどうかを判定できる, 両端点を含む) { | ||
Range r3_8 = RangeBuilder().lower(3).upper(8).build(); | ||
Range r4_5 = RangeBuilder().lower(4).upper(5).build(); | ||
EXPECT_TRUE(r3_8.contains(r4_5)); | ||
} | ||
|
||
TEST(別の閉区間を完全に含むかどうかを判定できる, 網羅的なテスト) { | ||
// this(L--U)に対してother(l--u)がどこに位置するかのパターン | ||
// .....L------U.... | ||
// l--u.:......:.... | ||
// l----u......:.... | ||
// l----=---u..:.... | ||
// l----=------u.... | ||
// l----=------=---u | ||
// .....l---u..:.... | ||
// .....l------u.... | ||
// .....:..l---u.... | ||
// .....:..l---=---u | ||
// .....:......l---u | ||
// .....:......:.l-u | ||
Range r3_8 = RangeBuilder().lower(3).upper(8).build(); | ||
EXPECT_FALSE(r3_8.contains(Range(1, 2))); | ||
EXPECT_FALSE(r3_8.contains(Range(1, 3))); | ||
EXPECT_FALSE(r3_8.contains(Range(1, 5))); | ||
EXPECT_FALSE(r3_8.contains(Range(1, 8))); | ||
EXPECT_FALSE(r3_8.contains(Range(1, 10))); | ||
EXPECT_TRUE(r3_8.contains(Range(3, 5))); | ||
EXPECT_TRUE(r3_8.contains(Range(3, 8))); | ||
EXPECT_TRUE(r3_8.contains(Range(5, 8))); | ||
EXPECT_FALSE(r3_8.contains(Range(5, 10))); | ||
EXPECT_FALSE(r3_8.contains(Range(8, 10))); | ||
EXPECT_FALSE(r3_8.contains(Range(9, 10))); | ||
} | ||
} |
14 changes: 0 additions & 14 deletions
14
C++_GoogleTest_VisualStudio2022/C++_GoogleTest_VisualStudio2022/todo.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,17 +1,3 @@ | ||
# 問題文 | ||
整数閉区間を示すクラス(あるいは構造体)をつくりたい。整数閉区間オブジェクトは下端点と上端点を持ち、文字列表現も返せる(例: 下端点 3, 上端点 8 の整数閉区間の文字列表記は "[3,8]")。ただし、上端点より下端点が大きい閉区間を作ることはできない。整数の閉区間は指定した整数を含むかどうかを判定できる。また、別の閉区間と等価かどうかや、完全に含むかどうかも判定できる。 | ||
|
||
# TODOリスト | ||
- [ ] 整数閉区間を示すクラスをつくる | ||
- [x] 整数閉区間オブジェクトは下端点と上端点を持つ | ||
- [x]ただし、上端点より下端点が大きい閉区間を作ることはできない。 | ||
- [x] 整数閉区間オブジェクトは文字列表現も返せる | ||
- 例: 下端点 3, 上端点 8 の整数閉区間の文字列表記は "[3,8]" | ||
- [ ] 整数閉区間は別の閉区間を完全に含むかどうかを判定できる | ||
- [ ] 各端点を含むかで実装 | ||
- [ ] パターン洗い出して網羅的にテスト | ||
- [ ] 整数閉区間は指定した整数を含むかどうかを判定できる | ||
- [ ] 整数閉区間は別の閉区間と等価かどうかを判定できる | ||
|
||
|
||
|