Skip to content

Commit

Permalink
restart C++ GoogleTest VS2022
Browse files Browse the repository at this point in the history
  • Loading branch information
yattom committed Sep 3, 2024
1 parent 1476a29 commit 00ea182
Show file tree
Hide file tree
Showing 4 changed files with 0 additions and 149 deletions.
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);
}
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);
}
};

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(文字列表現, 38の場合) {
Range sut = RangeBuilder().lower(3).upper(8).build();
EXPECT_EQ("[3,8]", sut.toString());
}

TEST(文字列表現, マイナス210の場合) {
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)));
}
}
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]"
- [ ] 整数閉区間は別の閉区間を完全に含むかどうかを判定できる
- [ ] 各端点を含むかで実装
- [ ] パターン洗い出して網羅的にテスト
- [ ] 整数閉区間は指定した整数を含むかどうかを判定できる
- [ ] 整数閉区間は別の閉区間と等価かどうかを判定できる



0 comments on commit 00ea182

Please sign in to comment.