@@ -0,0 +1,87 @@
|
||||
// This file is generated by mkfile.py
|
||||
// Date: 2026-06-25
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
#include <solution/8.h>
|
||||
|
||||
#include <climits>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class MyAtoiTest : public ::testing::Test
|
||||
{
|
||||
protected:
|
||||
void AssertMyAtoi(const std::string &input, int expected)
|
||||
{
|
||||
std::vector<char> buffer(input.begin(), input.end());
|
||||
buffer.push_back('\0');
|
||||
|
||||
EXPECT_EQ(myAtoi(buffer.data()), expected);
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(MyAtoiTest, Example1)
|
||||
{
|
||||
AssertMyAtoi("42", 42);
|
||||
}
|
||||
|
||||
TEST_F(MyAtoiTest, Example2)
|
||||
{
|
||||
AssertMyAtoi(" -42", -42);
|
||||
}
|
||||
|
||||
TEST_F(MyAtoiTest, Example3)
|
||||
{
|
||||
AssertMyAtoi("4193 with words", 4193);
|
||||
}
|
||||
|
||||
TEST_F(MyAtoiTest, ReturnsZeroWhenStringStartsWithNonDigit)
|
||||
{
|
||||
AssertMyAtoi("words and 987", 0);
|
||||
}
|
||||
|
||||
TEST_F(MyAtoiTest, ReadsOptionalPlusSign)
|
||||
{
|
||||
AssertMyAtoi("+1", 1);
|
||||
}
|
||||
|
||||
TEST_F(MyAtoiTest, RejectsMultipleOrSeparatedSigns)
|
||||
{
|
||||
AssertMyAtoi("+-12", 0);
|
||||
AssertMyAtoi("-+12", 0);
|
||||
AssertMyAtoi(" + 413", 0);
|
||||
}
|
||||
|
||||
TEST_F(MyAtoiTest, StopsAtFirstNonDigitAfterReadingDigits)
|
||||
{
|
||||
AssertMyAtoi("3.14159", 3);
|
||||
AssertMyAtoi("00000-42a1234", 0);
|
||||
AssertMyAtoi(" +0 123", 0);
|
||||
}
|
||||
|
||||
TEST_F(MyAtoiTest, HandlesEmptyAndSignOnlyStrings)
|
||||
{
|
||||
AssertMyAtoi("", 0);
|
||||
AssertMyAtoi(" ", 0);
|
||||
AssertMyAtoi("+", 0);
|
||||
AssertMyAtoi("-", 0);
|
||||
}
|
||||
|
||||
TEST_F(MyAtoiTest, ClampsPositiveOverflow)
|
||||
{
|
||||
AssertMyAtoi("2147483647", INT_MAX);
|
||||
AssertMyAtoi("2147483648", INT_MAX);
|
||||
AssertMyAtoi("91283472332", INT_MAX);
|
||||
}
|
||||
|
||||
TEST_F(MyAtoiTest, ClampsNegativeOverflow)
|
||||
{
|
||||
AssertMyAtoi("-2147483648", INT_MIN);
|
||||
AssertMyAtoi("-2147483649", INT_MIN);
|
||||
AssertMyAtoi("-91283472332", INT_MIN);
|
||||
}
|
||||
|
||||
TEST_F(MyAtoiTest, IgnoresLeadingZerosBeforeValidDigits)
|
||||
{
|
||||
AssertMyAtoi(" 0000000000012345678", 12345678);
|
||||
}
|
||||
Reference in New Issue
Block a user