add Longevity test

git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@281 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
syntheticpp 2005-10-05 09:11:58 +00:00
parent 13d56ada49
commit d0e75dd3b1
3 changed files with 85 additions and 0 deletions

32
test/Longevity/Makefile Executable file
View file

@ -0,0 +1,32 @@
CPP = g++
CC = gcc
OBJ = main.o
LINKOBJ = main.o
CXXINCS = -I./../../include
LIBS = -L../../lib -lloki
CXXFLAGS = $(CXXINCS) -O2 -DNDEBUG
BIN = main-gcc.exe
RM = rm -f
CHK_DIR_EXISTS= if not exist
MKDIR = mkdir
.PHONY: all all-before all-after clean clean-custom
all: all-before $(BIN) all-after
clean: clean-custom
${RM} $(OBJ) $(BIN)
$(BIN): $(OBJ)
$(CPP) $(LINKOBJ) -o main-gcc.exe $(LIBS)
check_tmp:
@$(CHK_DIR_EXISTS) "" $(MKDIR) "tmp"
Factory.o: Factory.cpp
$(CPP) -c main.cpp -o main.o $(CXXFLAGS)

40
test/Longevity/main.cpp Executable file
View file

@ -0,0 +1,40 @@
#include <iostream>
#include "loki/Singleton.h"
struct L1
{
L1(){std::cout << "create L1: " << this << "\n";}
~L1(){std::cout << "delete L1: " << this <<" \n";}
};
struct L2
{
L2(){std::cout << "create L2 \n";}
~L2(){std::cout << "delete L2 \n";}
};
struct L3
{
L3(){std::cout << "create L3 \n";}
~L3(){std::cout << "delete L3 \n";}
};
int main()
{
Loki::SetLongevity
(new L1, 1);
Loki::SetLongevity<L1, void (*)(L1*)>
(new L1, 1, Loki::Private::Deleter<L1>::Delete);
Loki::SetLongevity<L1, Loki::Private::Deleter<L1>::Type>
(new L1, 1, Loki::Private::Deleter<L1>::Delete);
Loki::SetLongevity(new L2, 2);
Loki::SetLongevity(new L1, 1);
Loki::SetLongevity(new L3, 3);
Loki::SetLongevity(new L1, 1);
std::cout << "\n";
}

13
test/Longevity/make.msvc.bat Executable file
View file

@ -0,0 +1,13 @@
if not exist tmp\ mkdir tmp
cl -c -Zm200 -O2 -DNDEBUG -MT -EHsc -GR -W0 -wd4710 -I"." -I"..\..\include" -Fotmp\ main.cpp
if not defined LOKI_MSVC_NOLIB (
link /NOLOGO /SUBSYSTEM:CONSOLE /incremental:no /OUT:"main-msvc.exe" ..\..\lib\loki.lib tmp\main.obj
) else (
link /NOLOGO /SUBSYSTEM:CONSOLE /incremental:no /OUT:"main-msvc.exe" tmp\main.obj ..\..\lib\SmallObj.obj ..\..\lib\Singleton.obj
)