Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Prog2
/
szorgalmi_feladatok
/
stringpool
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
3582e9a3
authored
Dec 02, 2022
by
Karsa Zoltán István
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
size_t numbers
parent
7e8d2adf
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
83 additions
and
77 deletions
+83
-77
pool.cpp
+2
-0
pool.h
+1
-0
rstring.cpp
+2
-0
rstring.h
+1
-0
test.cpp
+77
-77
No files found.
pool.cpp
View file @
3582e9a3
...
@@ -7,4 +7,5 @@
...
@@ -7,4 +7,5 @@
* Ezt a fájlt be kell adni (fel kell tölteni) a megoldással.
* Ezt a fájlt be kell adni (fel kell tölteni) a megoldással.
*/
*/
#include "memtrace.h"
#include "pool.h"
#include "pool.h"
\ No newline at end of file
pool.h
View file @
3582e9a3
...
@@ -11,6 +11,7 @@
...
@@ -11,6 +11,7 @@
#ifndef POOL_H
#ifndef POOL_H
#define POOL_H
#define POOL_H
#include "memtrace.h"
#include "rstring.h"
#include "rstring.h"
class
StringPool
{
class
StringPool
{
...
...
rstring.cpp
View file @
3582e9a3
...
@@ -7,4 +7,5 @@
...
@@ -7,4 +7,5 @@
* Ezt a fájlt be kell adni (fel kell tölteni) a megoldással.
* Ezt a fájlt be kell adni (fel kell tölteni) a megoldással.
*/
*/
#include "memtrace.h"
#include "rstring.h"
#include "rstring.h"
\ No newline at end of file
rstring.h
View file @
3582e9a3
...
@@ -12,6 +12,7 @@
...
@@ -12,6 +12,7 @@
#define RSTRING_H
#define RSTRING_H
#include <cstdio>
#include <cstdio>
#include "memtrace.h"
class
RString
{
class
RString
{
public
:
public
:
...
...
test.cpp
View file @
3582e9a3
...
@@ -29,18 +29,18 @@ int main() {
...
@@ -29,18 +29,18 @@ int main() {
TEST
(
RString
,
konstruktorok
)
{
TEST
(
RString
,
konstruktorok
)
{
RString
a
(
100
);
RString
a
(
100
);
EXPECT_STREQ
(
""
,
a
);
EXPECT_STREQ
(
""
,
a
);
EXPECT_EQ
(
100
,
a
.
capacity
());
EXPECT_EQ
(
100
u
,
a
.
capacity
());
EXPECT_EQ
(
0
,
a
.
size
());
EXPECT_EQ
(
0
u
,
a
.
size
());
RString
b
(
"alma"
);
RString
b
(
"alma"
);
EXPECT_STREQ
(
"alma"
,
b
);
EXPECT_STREQ
(
"alma"
,
b
);
EXPECT_EQ
(
5
,
b
.
capacity
());
EXPECT_EQ
(
5
u
,
b
.
capacity
());
EXPECT_EQ
(
4
,
b
.
size
());
EXPECT_EQ
(
4
u
,
b
.
size
());
RString
c
(
"alma"
,
10
);
RString
c
(
"alma"
,
10
);
EXPECT_STREQ
(
"alma"
,
b
);
EXPECT_STREQ
(
"alma"
,
b
);
EXPECT_EQ
(
10
,
c
.
capacity
());
EXPECT_EQ
(
10
u
,
c
.
capacity
());
EXPECT_EQ
(
4
,
c
.
size
());
EXPECT_EQ
(
4
u
,
c
.
size
());
}
END
}
END
#endif
#endif
...
@@ -48,8 +48,8 @@ int main() {
...
@@ -48,8 +48,8 @@ int main() {
TEST
(
RString
,
konstruktor
kivetel
)
{
TEST
(
RString
,
konstruktor
kivetel
)
{
RString
a
(
"alma"
,
5
);
RString
a
(
"alma"
,
5
);
EXPECT_STREQ
(
"alma"
,
a
);
EXPECT_STREQ
(
"alma"
,
a
);
EXPECT_EQ
(
5
,
a
.
capacity
());
EXPECT_EQ
(
5
u
,
a
.
capacity
());
EXPECT_EQ
(
4
,
a
.
size
());
EXPECT_EQ
(
4
u
,
a
.
size
());
try
{
try
{
EXPECT_THROW_THROW
(
RString
b
(
"alma"
,
4
),
const
char
*
p
);
EXPECT_THROW_THROW
(
RString
b
(
"alma"
,
4
),
const
char
*
p
);
...
@@ -66,12 +66,12 @@ int main() {
...
@@ -66,12 +66,12 @@ int main() {
RString
a
(
"alma"
,
20
);
RString
a
(
"alma"
,
20
);
a
=
"korte"
;
a
=
"korte"
;
EXPECT_STREQ
(
"korte"
,
a
);
EXPECT_STREQ
(
"korte"
,
a
);
EXPECT_EQ
(
20
,
a
.
capacity
());
EXPECT_EQ
(
20
u
,
a
.
capacity
());
EXPECT_EQ
(
5
,
a
.
size
());
EXPECT_EQ
(
5
u
,
a
.
size
());
a
=
"fa"
;
a
=
"fa"
;
EXPECT_STREQ
(
"fa"
,
a
);
EXPECT_STREQ
(
"fa"
,
a
);
EXPECT_EQ
(
20
,
a
.
capacity
());
EXPECT_EQ
(
20
u
,
a
.
capacity
());
EXPECT_EQ
(
2
,
a
.
size
());
EXPECT_EQ
(
2
u
,
a
.
size
());
}
END
}
END
#endif
#endif
...
@@ -81,8 +81,8 @@ int main() {
...
@@ -81,8 +81,8 @@ int main() {
char
*
str
=
a
;
char
*
str
=
a
;
strcpy
(
&
str
[
4
],
"fa"
);
strcpy
(
&
str
[
4
],
"fa"
);
EXPECT_STREQ
(
"almafa"
,
a
);
EXPECT_STREQ
(
"almafa"
,
a
);
EXPECT_EQ
(
20
,
a
.
capacity
());
EXPECT_EQ
(
20
u
,
a
.
capacity
());
EXPECT_EQ
(
6
,
a
.
size
());
EXPECT_EQ
(
6
u
,
a
.
size
());
}
END
}
END
#endif
#endif
...
@@ -90,10 +90,10 @@ int main() {
...
@@ -90,10 +90,10 @@ int main() {
#if ELKESZULT > 4
#if ELKESZULT > 4
TEST
(
StringPool
,
init
)
{
TEST
(
StringPool
,
init
)
{
StringPool
pool
(
10
,
20
);
StringPool
pool
(
10
,
20
);
EXPECT_EQ
(
10
,
pool
.
size
());
EXPECT_EQ
(
10
u
,
pool
.
size
());
EXPECT_EQ
(
10
,
pool
.
free_size
());
EXPECT_EQ
(
10
u
,
pool
.
free_size
());
RString
&
ref
=
pool
.
acquire
(
15
);
RString
&
ref
=
pool
.
acquire
(
15
);
EXPECT_EQ
(
20
,
ref
.
capacity
());
EXPECT_EQ
(
20
u
,
ref
.
capacity
());
EXPECT_STREQ
(
""
,
ref
);
EXPECT_STREQ
(
""
,
ref
);
RString
&
ref2
=
pool
.
acquire
(
"almafa"
);
RString
&
ref2
=
pool
.
acquire
(
"almafa"
);
EXPECT_STREQ
(
"almafa"
,
ref2
);
EXPECT_STREQ
(
"almafa"
,
ref2
);
...
@@ -104,13 +104,13 @@ int main() {
...
@@ -104,13 +104,13 @@ int main() {
#if ELKESZULT > 5
#if ELKESZULT > 5
TEST
(
StringPool
,
free_size
)
{
TEST
(
StringPool
,
free_size
)
{
StringPool
pool
(
2
,
20
);
StringPool
pool
(
2
,
20
);
EXPECT_EQ
(
2
,
pool
.
free_size
());
EXPECT_EQ
(
2
u
,
pool
.
free_size
());
RString
&
ref1
=
pool
.
acquire
(
15
);
RString
&
ref1
=
pool
.
acquire
(
15
);
EXPECT_EQ
(
1
,
pool
.
free_size
());
EXPECT_EQ
(
1
u
,
pool
.
free_size
());
RString
&
ref2
=
pool
.
acquire
(
20
);
RString
&
ref2
=
pool
.
acquire
(
20
);
EXPECT_EQ
(
0
,
pool
.
free_size
());
EXPECT_EQ
(
0
u
,
pool
.
free_size
());
EXPECT_EQ
(
20
,
ref1
.
capacity
());
EXPECT_EQ
(
20
u
,
ref1
.
capacity
());
EXPECT_EQ
(
20
,
ref2
.
capacity
());
EXPECT_EQ
(
20
u
,
ref2
.
capacity
());
}
END
}
END
#endif
#endif
...
@@ -118,12 +118,12 @@ int main() {
...
@@ -118,12 +118,12 @@ int main() {
TEST
(
StringPool
,
create_new_obj
)
{
TEST
(
StringPool
,
create_new_obj
)
{
StringPool
pool
(
1
,
20
);
StringPool
pool
(
1
,
20
);
RString
&
ref
=
pool
.
acquire
(
15
);
RString
&
ref
=
pool
.
acquire
(
15
);
EXPECT_EQ
(
20
,
ref
.
capacity
());
EXPECT_EQ
(
20
u
,
ref
.
capacity
());
EXPECT_EQ
(
0
,
pool
.
free_size
());
EXPECT_EQ
(
0
u
,
pool
.
free_size
());
RString
&
newobj
=
pool
.
acquire
(
10
);
RString
&
newobj
=
pool
.
acquire
(
10
);
EXPECT_EQ
(
0
,
pool
.
free_size
());
EXPECT_EQ
(
0
u
,
pool
.
free_size
());
EXPECT_EQ
(
2
,
pool
.
size
());
EXPECT_EQ
(
2
u
,
pool
.
size
());
EXPECT_EQ
(
10
,
newobj
.
capacity
());
EXPECT_EQ
(
10
u
,
newobj
.
capacity
());
}
END
}
END
#endif
#endif
...
@@ -131,15 +131,15 @@ int main() {
...
@@ -131,15 +131,15 @@ int main() {
TEST
(
StringPool
,
release
)
{
TEST
(
StringPool
,
release
)
{
StringPool
pool
(
1
,
20
);
StringPool
pool
(
1
,
20
);
RString
&
ref
=
pool
.
acquire
(
15
);
RString
&
ref
=
pool
.
acquire
(
15
);
EXPECT_EQ
(
1
,
pool
.
size
());
EXPECT_EQ
(
1
u
,
pool
.
size
());
EXPECT_EQ
(
0
,
pool
.
free_size
());
EXPECT_EQ
(
0
u
,
pool
.
free_size
());
EXPECT_FALSE
(
pool
.
acquireable
(
ref
));
EXPECT_FALSE
(
pool
.
acquireable
(
ref
));
ref
=
"alma"
;
ref
=
"alma"
;
EXPECT_STREQ
(
"alma"
,
ref
);
EXPECT_STREQ
(
"alma"
,
ref
);
pool
.
release
(
ref
);
pool
.
release
(
ref
);
EXPECT_TRUE
(
pool
.
acquireable
(
ref
));
EXPECT_TRUE
(
pool
.
acquireable
(
ref
));
EXPECT_EQ
(
1
,
pool
.
free_size
());
EXPECT_EQ
(
1
u
,
pool
.
free_size
());
EXPECT_EQ
(
1
,
pool
.
size
());
EXPECT_EQ
(
1
u
,
pool
.
size
());
ref
=
pool
.
acquire
(
15
);
ref
=
pool
.
acquire
(
15
);
EXPECT_STREQ
(
""
,
ref
);
EXPECT_STREQ
(
""
,
ref
);
}
END
}
END
...
@@ -149,21 +149,21 @@ int main() {
...
@@ -149,21 +149,21 @@ int main() {
TEST
(
StringPool
,
release_new
)
{
TEST
(
StringPool
,
release_new
)
{
StringPool
pool
(
2
,
15
);
StringPool
pool
(
2
,
15
);
RString
&
ref
=
pool
.
acquire
(
30
);
RString
&
ref
=
pool
.
acquire
(
30
);
EXPECT_EQ
(
3
,
pool
.
size
());
EXPECT_EQ
(
3
u
,
pool
.
size
());
EXPECT_EQ
(
30
,
ref
.
capacity
());
EXPECT_EQ
(
30
u
,
ref
.
capacity
());
EXPECT_EQ
(
2
,
pool
.
free_size
());
EXPECT_EQ
(
2
u
,
pool
.
free_size
());
ref
=
"alma"
;
ref
=
"alma"
;
RString
&
ref2
=
pool
.
acquire
(
15
);
RString
&
ref2
=
pool
.
acquire
(
15
);
EXPECT_EQ
(
3
,
pool
.
size
());
EXPECT_EQ
(
3
u
,
pool
.
size
());
EXPECT_EQ
(
15
,
ref2
.
capacity
());
EXPECT_EQ
(
15
u
,
ref2
.
capacity
());
EXPECT_EQ
(
1
,
pool
.
free_size
());
EXPECT_EQ
(
1
u
,
pool
.
free_size
());
pool
.
release
(
ref
);
pool
.
release
(
ref
);
pool
.
release
(
ref2
);
pool
.
release
(
ref2
);
EXPECT_EQ
(
3
,
pool
.
free_size
());
EXPECT_EQ
(
3
u
,
pool
.
free_size
());
EXPECT_EQ
(
3
,
pool
.
size
());
EXPECT_EQ
(
3
u
,
pool
.
size
());
pool
.
release
(
ref2
);
pool
.
release
(
ref2
);
EXPECT_EQ
(
3
,
pool
.
free_size
());
EXPECT_EQ
(
3
u
,
pool
.
free_size
());
EXPECT_EQ
(
3
,
pool
.
size
());
EXPECT_EQ
(
3
u
,
pool
.
size
());
}
END
}
END
#endif
#endif
...
@@ -172,23 +172,23 @@ int main() {
...
@@ -172,23 +172,23 @@ int main() {
TEST
(
StringPool
,
release_complex
)
{
TEST
(
StringPool
,
release_complex
)
{
StringPool
pool
(
3
,
15
);
StringPool
pool
(
3
,
15
);
RString
&
ref1
=
pool
.
acquire
(
15
);
RString
&
ref1
=
pool
.
acquire
(
15
);
EXPECT_EQ
(
3
,
pool
.
size
());
EXPECT_EQ
(
3
u
,
pool
.
size
());
EXPECT_EQ
(
15
,
ref1
.
capacity
());
EXPECT_EQ
(
15
u
,
ref1
.
capacity
());
EXPECT_EQ
(
2
,
pool
.
free_size
());
EXPECT_EQ
(
2
u
,
pool
.
free_size
());
RString
&
ref2
=
pool
.
acquire
(
30
);
RString
&
ref2
=
pool
.
acquire
(
30
);
EXPECT_EQ
(
4
,
pool
.
size
());
EXPECT_EQ
(
4
u
,
pool
.
size
());
EXPECT_EQ
(
30
,
ref2
.
capacity
());
EXPECT_EQ
(
30
u
,
ref2
.
capacity
());
EXPECT_EQ
(
2
,
pool
.
free_size
());
EXPECT_EQ
(
2
u
,
pool
.
free_size
());
pool
.
release
(
ref2
);
pool
.
release
(
ref2
);
EXPECT_EQ
(
3
,
pool
.
free_size
());
EXPECT_EQ
(
3
u
,
pool
.
free_size
());
EXPECT_EQ
(
4
,
pool
.
size
());
EXPECT_EQ
(
4
u
,
pool
.
size
());
RString
&
ref3
=
pool
.
acquire
(
25
);
RString
&
ref3
=
pool
.
acquire
(
25
);
EXPECT_EQ
(
4
,
pool
.
size
());
EXPECT_EQ
(
4
u
,
pool
.
size
());
EXPECT_EQ
(
30
,
ref2
.
capacity
());
EXPECT_EQ
(
30
u
,
ref2
.
capacity
());
EXPECT_EQ
(
2
,
pool
.
free_size
());
EXPECT_EQ
(
2
u
,
pool
.
free_size
());
pool
.
release
(
ref3
);
pool
.
release
(
ref3
);
EXPECT_EQ
(
3
,
pool
.
free_size
());
EXPECT_EQ
(
3
u
,
pool
.
free_size
());
EXPECT_EQ
(
4
,
pool
.
size
());
EXPECT_EQ
(
4
u
,
pool
.
size
());
}
END
}
END
#endif
#endif
...
@@ -196,36 +196,36 @@ int main() {
...
@@ -196,36 +196,36 @@ int main() {
TEST
(
StringPool
,
max_capacity_check
)
{
TEST
(
StringPool
,
max_capacity_check
)
{
StringPool
pool
(
1
,
10
);
StringPool
pool
(
1
,
10
);
pool
.
release
(
pool
.
acquire
(
5
));
pool
.
release
(
pool
.
acquire
(
5
));
EXPECT_EQ
(
1
,
pool
.
free_size
());
EXPECT_EQ
(
1
u
,
pool
.
free_size
());
EXPECT_EQ
(
1
,
pool
.
size
());
EXPECT_EQ
(
1
u
,
pool
.
size
());
RString
&
tmp
=
pool
.
acquire
(
15
);
RString
&
tmp
=
pool
.
acquire
(
15
);
pool
.
release
(
pool
.
acquire
(
20
));
pool
.
release
(
pool
.
acquire
(
20
));
pool
.
release
(
pool
.
acquire
(
25
));
pool
.
release
(
pool
.
acquire
(
25
));
pool
.
release
(
tmp
);
pool
.
release
(
tmp
);
EXPECT_EQ
(
4
,
pool
.
free_size
());
EXPECT_EQ
(
4
u
,
pool
.
free_size
());
EXPECT_EQ
(
4
,
pool
.
size
());
EXPECT_EQ
(
4
u
,
pool
.
size
());
RString
&
ref
=
pool
.
acquire
(
15
);
RString
&
ref
=
pool
.
acquire
(
15
);
EXPECT_EQ
(
3
,
pool
.
free_size
());
EXPECT_EQ
(
3
u
,
pool
.
free_size
());
EXPECT_EQ
(
4
,
pool
.
size
());
EXPECT_EQ
(
4
u
,
pool
.
size
());
EXPECT_EQ
(
15
,
ref
.
capacity
());
EXPECT_EQ
(
15
u
,
ref
.
capacity
());
RString
&
ref1
=
pool
.
acquire
(
15
);
RString
&
ref1
=
pool
.
acquire
(
15
);
EXPECT_EQ
(
2
,
pool
.
free_size
());
EXPECT_EQ
(
2
u
,
pool
.
free_size
());
EXPECT_EQ
(
4
,
pool
.
size
());
EXPECT_EQ
(
4
u
,
pool
.
size
());
EXPECT_EQ
(
20
,
ref1
.
capacity
());
EXPECT_EQ
(
20
u
,
ref1
.
capacity
());
RString
&
ref2
=
pool
.
acquire
(
15
);
RString
&
ref2
=
pool
.
acquire
(
15
);
EXPECT_EQ
(
1
,
pool
.
free_size
());
EXPECT_EQ
(
1
u
,
pool
.
free_size
());
EXPECT_EQ
(
4
,
pool
.
size
());
EXPECT_EQ
(
4
u
,
pool
.
size
());
EXPECT_EQ
(
25
,
ref2
.
capacity
());
EXPECT_EQ
(
25
u
,
ref2
.
capacity
());
RString
&
ref3
=
pool
.
acquire
(
15
);
RString
&
ref3
=
pool
.
acquire
(
15
);
EXPECT_EQ
(
1
,
pool
.
free_size
());
EXPECT_EQ
(
1
u
,
pool
.
free_size
());
EXPECT_EQ
(
5
,
pool
.
size
());
EXPECT_EQ
(
5
u
,
pool
.
size
());
EXPECT_EQ
(
15
,
ref3
.
capacity
());
EXPECT_EQ
(
15
u
,
ref3
.
capacity
());
pool
.
release
(
ref1
);
pool
.
release
(
ref1
);
pool
.
release
(
ref2
);
pool
.
release
(
ref2
);
RString
&
ref4
=
pool
.
acquire
(
15
);
RString
&
ref4
=
pool
.
acquire
(
15
);
EXPECT_EQ
(
2
,
pool
.
free_size
());
EXPECT_EQ
(
2
u
,
pool
.
free_size
());
EXPECT_EQ
(
5
,
pool
.
size
());
EXPECT_EQ
(
5
u
,
pool
.
size
());
EXPECT_EQ
(
20
,
ref4
.
capacity
());
EXPECT_EQ
(
20
u
,
ref4
.
capacity
());
}
END
}
END
#endif
#endif
...
@@ -235,8 +235,8 @@ int main() {
...
@@ -235,8 +235,8 @@ int main() {
RString
&
alma
=
pool
.
acquire
(
"alma"
);
RString
&
alma
=
pool
.
acquire
(
"alma"
);
const
RString
&
fa
=
pool
.
acquire
(
"fa"
);
const
RString
&
fa
=
pool
.
acquire
(
"fa"
);
RString
&
almafa
=
pool
.
append
(
alma
,
fa
);
RString
&
almafa
=
pool
.
append
(
alma
,
fa
);
EXPECT_EQ
(
3
,
pool
.
size
());
EXPECT_EQ
(
3
u
,
pool
.
size
());
EXPECT_EQ
(
1
,
pool
.
free_size
());
EXPECT_EQ
(
1
u
,
pool
.
free_size
());
EXPECT_EQ
(
&
almafa
,
&
alma
);
EXPECT_EQ
(
&
almafa
,
&
alma
);
EXPECT_STREQ
(
"almafa"
,
almafa
);
EXPECT_STREQ
(
"almafa"
,
almafa
);
}
END
}
END
...
@@ -248,8 +248,8 @@ int main() {
...
@@ -248,8 +248,8 @@ int main() {
RString
&
arvizturo
=
pool
.
acquire
(
"arvizturo"
);
RString
&
arvizturo
=
pool
.
acquire
(
"arvizturo"
);
RString
&
tukorfurogep
=
pool
.
acquire
(
"tukorfurogep"
);
RString
&
tukorfurogep
=
pool
.
acquire
(
"tukorfurogep"
);
RString
&
egyben
=
pool
.
append
(
arvizturo
,
tukorfurogep
);
RString
&
egyben
=
pool
.
append
(
arvizturo
,
tukorfurogep
);
EXPECT_EQ
(
4
,
pool
.
size
());
EXPECT_EQ
(
4
u
,
pool
.
size
());
EXPECT_EQ
(
1
,
pool
.
free_size
());
EXPECT_EQ
(
1
u
,
pool
.
free_size
());
EXPECT_NE
(
&
arvizturo
,
&
egyben
);
EXPECT_NE
(
&
arvizturo
,
&
egyben
);
EXPECT_STREQ
(
"arvizturotukorfurogep"
,
egyben
);
EXPECT_STREQ
(
"arvizturotukorfurogep"
,
egyben
);
}
END
}
END
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment