Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Prog2
/
labor_peldak
/
lab_02
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
76159847
authored
Feb 19, 2020
by
Szeberényi Imre
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
typo + gtest_lite v3
parent
ebb26348
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
78 additions
and
49 deletions
+78
-49
string2_cpp/gtest_lite.h
+52
-27
string2_cpp/memtrace.cpp
+10
-9
string2_cpp/memtrace.h
+15
-12
string2_cpp/string2_main.cpp
+1
-1
No files found.
string2_cpp/gtest_lite.h
View file @
76159847
#
ifndef
GTEST_LITE_H
#ifndef GTEST_LITE_H
#define GTEST_LITE_H
/**
* \file gtest_lite.h (v
2
)
* \file gtest_lite.h (v
3/2019
)
*
* Google gtest keretrendszerhez hasonló rendszer.
* Sz.I. 2015., 2016., 2017. (_Has_X)
* Sz.I. 2018 (template), ENDM, ENDMsg
* Sz.I. 2018 (template), ENDM, ENDMsg, nullptr_t
* Sz.I. 2019 singleton
*
* A tesztelés legalapvetőbb funkcióit támogató függvények és makrók.
* Nem szálbiztos megvalósítás.
*
* Egyetlen fájlban kell megvalósítani minden tesztesetet!
* Csak ebből include-olható a gtest_lite.h
* Ezen korlátozás kiküszöböléséhez sigletonnal kellene rednesen megvalósítani.
a test osztályt!
*
* Szabadon felhasználható, bővíthető.
*
...
...
@@ -129,6 +126,11 @@
catch (...) { gtest_lite::test.tmp = false; }\
EXPECTTHROW(statement, "nem dob kivetelt.", "kivetelt dobott.")
/// Nem várunk kivételt gtest kompatibilitás miatt
#define ASSERT_NO_THROW(statement) try { gtest_lite::test.tmp = true; statement; } \
catch (...) { gtest_lite::test.tmp = false; }\
EXPECTTHROW(statement, "nem dob kivetelt.", "kivetelt dobott.")
/// Kivételt várunk és továbbdobjuk -- ilyen nincs a gtest-ben
#define EXPECT_THROW_THROW(statement, exception_type) try { gtest_lite::test.tmp = false; statement; } \
catch (exception_type) { gtest_lite::test.tmp = true; throw; } \
...
...
@@ -150,10 +152,14 @@ template<typename T> struct _Has_##X { \
static bool const member = sizeof(f<Derived>(0)) == 2; \
};
/// Segédfüggvény egy publikus adattag, vagy tagfüggvény létezésének tesztelésére
/// fordítási időben
inline
void
hasMember
(...)
{}
/// Segédsablon típuskonverzió futás közbeni ellenőrzésere
template
<
typename
F
,
typename
T
>
struct
_Is_Types
{
template
<
typename
D
>
static
char
(
&
f
(
D
))[
1
];
template
<
typename
D
>
static
char
(
&
f
(
D
*
))[
1
];
template
<
typename
D
>
static
char
(
&
f
(...))[
2
];
static
bool
const
convertable
=
sizeof
(
f
<
T
>
(
F
()))
==
1
;
};
...
...
@@ -197,8 +203,15 @@ struct Test {
bool
tmp
;
///< temp a kivételkezeléshez;
std
::
string
name
;
///< éppen futó teszt neve
std
::
fstream
null
;
///< nyelő, ha nem kell kiírni semmit
static
Test
&
getTest
()
{
static
Test
instance
;
///< egyedüli (singleton) példány
return
instance
;
}
private
:
/// singleton minta miatt
Test
()
:
sum
(
0
),
failed
(
0
),
status
(
false
),
null
(
"/dev/null"
)
{}
Test
(
const
Test
&
);
void
operator
=
(
const
Test
&
);
public
:
/// Teszt kezdete
void
begin
(
const
char
*
n
)
{
name
=
n
;
status
=
true
;
...
...
@@ -255,12 +268,13 @@ struct Test {
}
};
/// Egyetlen statikus példány. (singletonnal szebb lenne)
static
Test
test
;
/// A statikus referencia minden fordítási egységben keletkezik, de
/// mindegyik egyetlen példányra fog hivatkozni a singleton minta miatt
static
Test
&
test
=
Test
::
getTest
();
/// általános sablon a várt értékhez.
template
<
typename
T
>
std
::
ostream
&
EXPECT_
(
T
exp
,
T
act
,
bool
(
*
pred
)(
T
,
T
),
const
char
*
file
,
int
line
,
template
<
typename
T
1
,
typename
T2
>
std
::
ostream
&
EXPECT_
(
T
1
exp
,
T2
act
,
bool
(
*
pred
)(
T1
,
T2
),
const
char
*
file
,
int
line
,
const
char
*
expr
,
const
char
*
lhs
=
"elvart"
,
const
char
*
rhs
=
"aktual"
)
{
return
test
.
expect
(
pred
(
exp
,
act
),
file
,
line
,
expr
)
<<
"** "
<<
lhs
<<
": "
<<
std
::
boolalpha
<<
exp
...
...
@@ -268,14 +282,25 @@ std::ostream& EXPECT_(T exp, T act, bool (*pred)(T, T), const char *file, int li
}
/// pointerre specializált sablon a várt értékhez.
template
<
typename
T
>
std
::
ostream
&
EXPECT_
(
T
*
exp
,
T
*
act
,
bool
(
*
pred
)(
T
*
,
T
*
),
const
char
*
file
,
int
line
,
template
<
typename
T
1
,
typename
T2
>
std
::
ostream
&
EXPECT_
(
T
1
*
exp
,
T2
*
act
,
bool
(
*
pred
)(
T1
*
,
T2
*
),
const
char
*
file
,
int
line
,
const
char
*
expr
,
const
char
*
lhs
=
"elvart"
,
const
char
*
rhs
=
"aktual"
)
{
return
test
.
expect
(
pred
(
exp
,
act
),
file
,
line
,
expr
)
<<
"** "
<<
lhs
<<
": "
<<
(
void
*
)
exp
<<
"
\n
** "
<<
rhs
<<
": "
<<
(
void
*
)
act
<<
std
::
endl
;
}
#if __cplusplus >= 201103L
/// nullptr-re specializált sablon a várt értékhez.
template
<
typename
T1
>
std
::
ostream
&
EXPECT_
(
T1
*
exp
,
std
::
nullptr_t
act
,
bool
(
*
pred
)(
T1
*
,
std
::
nullptr_t
),
const
char
*
file
,
int
line
,
const
char
*
expr
,
const
char
*
lhs
=
"elvart"
,
const
char
*
rhs
=
"aktual"
)
{
return
test
.
expect
(
pred
(
exp
,
act
),
file
,
line
,
expr
)
<<
"** "
<<
lhs
<<
": "
<<
(
void
*
)
exp
<<
"
\n
** "
<<
rhs
<<
": "
<<
(
void
*
)
act
<<
std
::
endl
;
}
#endif
/// stringek összehasonlításához.
/// azért nem spec. mert a sima EQ-ra másként kell működnie.
inline
...
...
@@ -288,8 +313,8 @@ std::ostream& EXPECTSTR(const char *exp, const char *act, bool (*pred)(const cha
/// segéd sablonok a relációkhoz.
/// azért nem STL (algorithm), mert csak a függvény lehet, hogy menjen a deduckció
template
<
typename
T
>
bool
eq
(
T
a
,
T
b
)
{
return
a
==
b
;
}
template
<
typename
T
1
,
typename
T2
>
bool
eq
(
T
1
a
,
T2
b
)
{
return
a
==
b
;
}
inline
bool
eqstr
(
const
char
*
a
,
const
char
*
b
)
{
...
...
@@ -298,8 +323,8 @@ bool eqstr(const char *a, const char *b) {
return
false
;
}
template
<
typename
T
>
bool
ne
(
T
a
,
T
b
)
{
return
a
!=
b
;
}
template
<
typename
T
1
,
typename
T2
>
bool
ne
(
T
1
a
,
T2
b
)
{
return
a
!=
b
;
}
inline
bool
nestr
(
const
char
*
a
,
const
char
*
b
)
{
...
...
@@ -308,17 +333,17 @@ bool nestr(const char *a, const char *b) {
return
false
;
}
template
<
typename
T
>
bool
le
(
T
a
,
T
b
)
{
return
a
<=
b
;
}
template
<
typename
T
1
,
typename
T2
>
bool
le
(
T
1
a
,
T2
b
)
{
return
a
<=
b
;
}
template
<
typename
T
>
bool
lt
(
T
a
,
T
b
)
{
return
a
<
b
;
}
template
<
typename
T
1
,
typename
T2
>
bool
lt
(
T
1
a
,
T2
b
)
{
return
a
<
b
;
}
template
<
typename
T
>
bool
ge
(
T
a
,
T
b
)
{
return
a
>=
b
;
}
template
<
typename
T
1
,
typename
T2
>
bool
ge
(
T
1
a
,
T2
b
)
{
return
a
>=
b
;
}
template
<
typename
T
>
bool
gt
(
T
a
,
T
b
)
{
return
a
>
b
;
}
template
<
typename
T
1
,
typename
T2
>
bool
gt
(
T
1
a
,
T2
b
)
{
return
a
>
b
;
}
/// Segédsablon valós számok összehasonlításához
/// Nem bombabiztos, de nekünk most jó lesz
...
...
string2_cpp/memtrace.cpp
View file @
76159847
...
...
@@ -3,12 +3,13 @@ Memoriaszivargas-detektor
Keszitette: Peregi Tamas, BME IIT, 2011
petamas@iit.bme.hu
Kanari: Szeberenyi Imre, 2013.
VS 2012: Szebernyi Imre, 2015.,
VS 2012: Szeber
é
nyi Imre, 2015.,
mem_dump: 2016.
meset felszabaditaskor: 2018.
typo: 2019.
*********************************/
/*defini
e
alni kell, ha nem paracssorbol allitjuk be (-DMEMTRACE) */
/*definialni kell, ha nem paracssorbol allitjuk be (-DMEMTRACE) */
/*#define MEMTRACE */
#ifdef _MSC_VER
...
...
@@ -207,10 +208,10 @@ START_NAMESPACE
}
}
/* ha nincs hiba, akkor 0-val tr vissza */
/* ha nincs hiba, akkor 0-val t
é
r vissza */
int
mem_check
(
void
)
{
initialize
();
if
(
dying
)
return
2
;
/* c
mz
si hiba */
if
(
dying
)
return
2
;
/* c
ímzé
si hiba */
if
(
registry
.
next
)
{
/*szivarog*/
...
...
@@ -220,7 +221,7 @@ START_NAMESPACE
fprintf
(
fperror
,
"Szivargas:
\n
"
);
print_registry_item
(
registry
.
next
);
registry
.
next
=
NULL
;
return
1
;
/* mem
ria fogy
s */
return
1
;
/* mem
ória fogyá
s */
}
return
0
;
}
...
...
@@ -320,7 +321,7 @@ START_NAMESPACE
END_NAMESPACE
/*******************************************************************/
/* C-st
lus memriakezel
s */
/* C-st
ílusú memóriakezelé
s */
/*******************************************************************/
#ifdef MEMTRACE_C
...
...
@@ -414,7 +415,7 @@ END_NAMESPACE
#endif
/*MEMTRACE_C*/
/*******************************************************************/
/* C++-st
lus memriakezel
s */
/* C++-st
ílusú memóriakezelé
s */
/*******************************************************************/
#ifdef MEMTRACE_CPP
...
...
@@ -431,7 +432,7 @@ START_NAMESPACE
void
set_delete_call
(
int
line
,
const
char
*
file
)
{
initialize
();
delete_call
=
pack
(
0
,
""
,
line
,
file
);
/*func
rtke lnyegtelen, majd fell
rjuk*/
delete_call
=
pack
(
0
,
""
,
line
,
file
);
/*func
értéke lényegtelen, majd felülí
rjuk*/
delete_called
=
TRUE
;
}
...
...
@@ -488,7 +489,7 @@ void operator delete[](void * p) THROW_NOTHING {
}
/* Visual C++ 2012 miatt kell, mert h
klis, hogy nincs megfelel delete, br senki sem haszn
lja */
/* Visual C++ 2012 miatt kell, mert h
áklis, hogy nincs megfelelő delete, bár senki sem haszná
lja */
void
operator
delete
(
void
*
p
,
int
,
const
char
*
)
THROW_NOTHING
{
memtrace
::
traced_delete
(
p
,
FDELETE
);
}
...
...
string2_cpp/memtrace.h
View file @
76159847
...
...
@@ -3,9 +3,9 @@ Memoriaszivargas-detektor
Keszitette: Peregi Tamas, BME IIT, 2011
petamas@iit.bme.hu
Kanari: Szeberenyi Imre, 2013.,
VS 2012: Szebernyi Imre, 2015.,
VS 2012: Szeber
é
nyi Imre, 2015.,
mem_dump: 2016.
inclue-ok: 2017., 2018.
inclue-ok: 2017., 2018.
2019.
*********************************/
#ifndef MEMTRACE_H
...
...
@@ -13,7 +13,7 @@ inclue-ok: 2017., 2018.
#if defined(MEMTRACE)
/*ha defini
lva van, akkor a hibakat ebbe a fajlba rja, egy
bkent stderr-re*/
/*ha defini
álva van, akkor a hibakat ebbe a fajlba írja, egyé
bkent stderr-re*/
/*#define MEMTRACE_ERRFILE MEMTRACE.ERR*/
/*ha definialva van, akkor futas kozben lancolt listat epit. Javasolt a hasznalata*/
...
...
@@ -71,25 +71,25 @@ inclue-ok: 2017., 2018.
#define TRACEC(func) func
#endif
// THROW deklar
ci v
ltozatai
// THROW deklar
áció vá
ltozatai
#if defined(_MSC_VER)
// VS rosszul kezeli az __cplusplus makrot
#if _MSC_VER < 1900
// * nem biztos, hogy j
gy *
// * nem biztos, hogy j
ó í
gy *
#define THROW_BADALLOC
#define THROW_NOTHING
#else
// C++11 vagy jabb
// C++11 vagy
ú
jabb
#define THROW_BADALLOC noexcept(false)
#define THROW_NOTHING noexcept
#endif
#else
#if __cplusplus < 201103L
// C++2003 vagy rgebbi
// C++2003 vagy r
é
gebbi
#define THROW_BADALLOC throw (std::bad_alloc)
#define THROW_NOTHING throw ()
#else
// C++11 vagy jabb
// C++11 vagy
ú
jabb
#define THROW_BADALLOC noexcept(false)
#define THROW_NOTHING noexcept
#endif
...
...
@@ -144,12 +144,15 @@ END_NAMESPACE
#include <stdlib.h>
#ifdef __cplusplus
#include <iostream>
/* ide gy
jtjk a nemtrace-vel sszeakad headereket, hogy el
bb legyenek */
/* ide gy
űjtjük a nemtrace-vel összeakadó headereket, hogy elő
bb legyenek */
#include <fstream> // VS 2013 headerj
ben van deleted definici
#include <fstream> // VS 2013 headerj
ében van deleted definició
#include <sstream>
#include <vector>
#include <list>
#include <map>
#include <algorithm>
#include <functional>
#endif
#ifdef MEMTRACE_CPP
namespace
std
{
...
...
@@ -197,7 +200,7 @@ void * operator new[](size_t size) THROW_BADALLOC;
void
operator
delete
(
void
*
p
)
THROW_NOTHING
;
void
operator
delete
[](
void
*
p
)
THROW_NOTHING
;
/* Visual C++ 2012 miatt kell, mert h
klis, hogy nincs megfelel delete, br senki sem haszn
lja */
/* Visual C++ 2012 miatt kell, mert h
áklis, hogy nincs megfelelő delete, bár senki sem haszná
lja */
void
operator
delete
(
void
*
p
,
int
,
const
char
*
)
THROW_NOTHING
;
void
operator
delete
[](
void
*
p
,
int
,
const
char
*
)
THROW_NOTHING
;
...
...
@@ -206,7 +209,7 @@ void operator delete[](void *p, int, const char *) THROW_NOTHING;
#define delete memtrace::set_delete_call(__LINE__, __FILE__),delete
#ifdef CPORTA
//
#define system(...) // system(__VA_ARGS__)
#define system(...) // system(__VA_ARGS__)
#endif
#endif
/*MEMTRACE_CPP*/
...
...
string2_cpp/string2_main.cpp
View file @
76159847
...
...
@@ -6,7 +6,7 @@
* C++ nyelvre átírt dinamikus String működését teszteli.
*
* Ha a javasolt sorrendben oldja meg a feladatot, akkor lépésről-lépésre
* tesztelheti az elkészített függvényeket. Ehhez a string
1
.h fájlban definiált
* tesztelheti az elkészített függvényeket. Ehhez a string
2
.h fájlban definiált
* ELKESZULT makró értékét kell megfelelően változtatni.
*
* A C verzióval ellentétben nem csak szemrevételezéssel ellenőrizzük az egyes
...
...
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