O documento discute testes de unidade com C++. Ele apresenta o framework CPPUnit para testes de unidade em C++, incluindo suas características como saída XML e de texto, macros para facilitar a declaração de testes e suporte a preparação hierárquica de testes. Além disso, explica como configurar e executar testes com CPPUnit.
1. Testes de Unidade com C++
Semana Acadˆmica El´trica e Inform´tica 2011
e e a
Ramiro Batista da Luz
DAINF - Departamento Acadˆmico de Inform´tica
e a
Programa de P´s-Gradua¸˜o em Computa¸˜o Aplicada
o ca ca
Universidade Tecnol´gica Federal do Paran´
o a
23 Agosto 2011
2. Quem?
Ramiro Batista da Luz, programador, debian-pr [GUD-PR(2006)],
grupy-pr [Grupy-PR(2007)], dojo-pr [Dojo-PR(2010)].
• Mestrando pela Universidade Tecnol´gica Federal do Paran´.
o a
3. Quem?
Ramiro Batista da Luz, programador, debian-pr [GUD-PR(2006)],
grupy-pr [Grupy-PR(2007)], dojo-pr [Dojo-PR(2010)].
• Mestrando pela Universidade Tecnol´gica Federal do Paran´.
o a
• Programador da Cˆmara Municipal de Curitiba.
a
5. Onde?
• Nascido em Florian´polis-SC
o
• Aos 3 anos foi para Chapec´-SC.
o
6. Onde?
• Nascido em Florian´polis-SC
o
• Aos 3 anos foi para Chapec´-SC.
o
• Aos 6 anos mudan¸a para Curitiba-PR.
c
7. Onde?
• Nascido em Florian´polis-SC
o
• Aos 3 anos foi para Chapec´-SC.
o
• Aos 6 anos mudan¸a para Curitiba-PR.
c
• Estudou no Positivo, at´ a gradua¸˜o, Bacharelado em Inform´tica.
e ca a
8. Onde?
• Nascido em Florian´polis-SC
o
• Aos 3 anos foi para Chapec´-SC.
o
• Aos 6 anos mudan¸a para Curitiba-PR.
c
• Estudou no Positivo, at´ a gradua¸˜o, Bacharelado em Inform´tica.
e ca a
• Ingressou no mestrado profissional em computa¸˜o aplicada da
ca
UTFPR.
11. Como?
• Palestra JUnit Adolfo, [Adolfo Neto(2010)]
• Sugest˜o de Coding Dojo na UTFPR
a
ca e ´
• Sele¸˜o do Mestrado - Engenharia de Software - M´todos Ageis -
Coding Dojo [CodingDojo(2004)].
17. Testes
• TDD - Test Driven Development [Beck(2002)]
• SUnit - Original para Smalltalk. [Wikipedia(1999b)] e
[Wikipedia(1972)]. Por Kent Beck. [Beck(1999)]
18. Testes
• TDD - Test Driven Development [Beck(2002)]
• SUnit - Original para Smalltalk. [Wikipedia(1999b)] e
[Wikipedia(1972)]. Por Kent Beck. [Beck(1999)]
• xUnit - Nomenclatura usada para generalizar o padr˜o, muitas
a
linguagens desenvolveram bibliotecas similares, JUnit, NUnit,
PyUnit, CPPUnit, ... [Wikipedia(1999a)]
19. Testes
• TDD - Test Driven Development [Beck(2002)]
• SUnit - Original para Smalltalk. [Wikipedia(1999b)] e
[Wikipedia(1972)]. Por Kent Beck. [Beck(1999)]
• xUnit - Nomenclatura usada para generalizar o padr˜o, muitas
a
linguagens desenvolveram bibliotecas similares, JUnit, NUnit,
PyUnit, CPPUnit, ... [Wikipedia(1999a)]
• Bowling Kata in C por Olve Maudal [Maudal(2007)] inspirado por
Robert C. Martin [Martin(2005)]
21. CPPUnit
CPPUnit
• Portado do JUnit para C++ por Michael Feathers [Feathers(2002a)]
• Para instalar obter a biblioteca no site [Feathers(2002b)] ou ...
22. CPPUnit
CPPUnit
• Portado do JUnit para C++ por Michael Feathers [Feathers(2002a)]
• Para instalar obter a biblioteca no site [Feathers(2002b)] ou ...
• instalar via gerenciador de pacotes(linux/debian)
# aptitude install libcppunit-1.12-1 libcppunit-dev libcppunit-doc
23. CPPUnit
CPPUnit
• Portado do JUnit para C++ por Michael Feathers [Feathers(2002a)]
• Para instalar obter a biblioteca no site [Feathers(2002b)] ou ...
• instalar via gerenciador de pacotes(linux/debian)
# aptitude install libcppunit-1.12-1 libcppunit-dev libcppunit-doc
• Utilizada na Disciplina de Programa¸˜o Avan¸ada
ca c
[DAINF - UTFPR(2011a)]
28. CPPUnit Caracter´
ısticas
Caracter´
ısticas [Feathers(2002c)]
• Sa´ XML
ıda
• Sa´ de texto similar a compilador para integrar com IDE
ıda
29. CPPUnit Caracter´
ısticas
Caracter´
ısticas [Feathers(2002c)]
• Sa´ XML
ıda
• Sa´ de texto similar a compilador para integrar com IDE
ıda
• Macros auxiliares para facilitar a declara¸˜o da su´ de testes
ca ıte
30. CPPUnit Caracter´
ısticas
Caracter´
ısticas [Feathers(2002c)]
• Sa´ XML
ıda
• Sa´ de texto similar a compilador para integrar com IDE
ıda
• Macros auxiliares para facilitar a declara¸˜o da su´ de testes
ca ıte
• Suporte a prepara¸˜o de testes hier´rquica
ca a
31. CPPUnit Caracter´
ısticas
Caracter´
ısticas [Feathers(2002c)]
• Sa´ XML
ıda
• Sa´ de texto similar a compilador para integrar com IDE
ıda
• Macros auxiliares para facilitar a declara¸˜o da su´ de testes
ca ıte
• Suporte a prepara¸˜o de testes hier´rquica
ca a
• Registro de testes para reduzir a recompila¸˜o
ca
32. CPPUnit Caracter´
ısticas
Caracter´
ısticas [Feathers(2002c)]
• Sa´ XML
ıda
• Sa´ de texto similar a compilador para integrar com IDE
ıda
• Macros auxiliares para facilitar a declara¸˜o da su´ de testes
ca ıte
• Suporte a prepara¸˜o de testes hier´rquica
ca a
• Registro de testes para reduzir a recompila¸˜o
ca
• Plugin de teste para agilizar o ciclo de compila¸˜o/teste
ca
33. CPPUnit Caracter´
ısticas
Caracter´
ısticas [Feathers(2002c)]
• Sa´ XML
ıda
• Sa´ de texto similar a compilador para integrar com IDE
ıda
• Macros auxiliares para facilitar a declara¸˜o da su´ de testes
ca ıte
• Suporte a prepara¸˜o de testes hier´rquica
ca a
• Registro de testes para reduzir a recompila¸˜o
ca
• Plugin de teste para agilizar o ciclo de compila¸˜o/teste
ca
• Protetor para encapsular a execu¸˜o do teste
ca
34. CPPUnit Caracter´
ısticas
Caracter´
ısticas [Feathers(2002c)]
• Sa´ XML
ıda
• Sa´ de texto similar a compilador para integrar com IDE
ıda
• Macros auxiliares para facilitar a declara¸˜o da su´ de testes
ca ıte
• Suporte a prepara¸˜o de testes hier´rquica
ca a
• Registro de testes para reduzir a recompila¸˜o
ca
• Plugin de teste para agilizar o ciclo de compila¸˜o/teste
ca
• Protetor para encapsular a execu¸˜o do teste
ca
• Executor de teste MFC (MfcTestRunner MfcTestRunner ) por
Baptiste Lepilleur [Baptiste Lepilleur(2002b)]
35. CPPUnit Caracter´
ısticas
Caracter´
ısticas [Feathers(2002c)]
• Sa´ XML
ıda
• Sa´ de texto similar a compilador para integrar com IDE
ıda
• Macros auxiliares para facilitar a declara¸˜o da su´ de testes
ca ıte
• Suporte a prepara¸˜o de testes hier´rquica
ca a
• Registro de testes para reduzir a recompila¸˜o
ca
• Plugin de teste para agilizar o ciclo de compila¸˜o/teste
ca
• Protetor para encapsular a execu¸˜o do teste
ca
• Executor de teste MFC (MfcTestRunner MfcTestRunner ) por
Baptiste Lepilleur [Baptiste Lepilleur(2002b)]
• Executor de teste gr´fico baseado em QT (QtTestRunner
a
QtTestRunner ) por Baptiste Lepilleur [Baptiste Lepilleur(2002a)]
36. CPPUnit - Includes
# include < fstream >
# include < cppunit / portability / Stream .h >
# include < cppunit / C omp i l e r O u t p u t t e r .h >
# include < cppunit / extensions / T e s t F a c t o r y R e g i s t r y .h >
# include < cppunit / XmlOutputter .h >
# include < cppunit / ui / text / TestRunner .h >
37. CPPUnit - Sa´ XML
ıda
bool xml_runner ()
{
// Get the top level suite from the r e g i s t r y
CppUnit :: Test * suite =
CppUnit :: T e s t F a c t o r y R e g i s t r y :: getRegistry (). makeTest ();
CppUnit :: TextUi :: TestRunner runner ;
runner . addTest ( suite );
std :: ofstream file ( " result . xml " );
CppUnit :: XmlOutputter * outputter =
new CppUnit :: XmlOutputter (& runner . result () , file );
runner . setOutputter ( outputter );
// use the suite factory , then execute all tests
return runner . run ( " " , false );
}
38. CPPUnit - Sa´ Compiler
ıda
bool text_runner ()
{
// Get the top level suite from the r e g i s t r y
CppUnit :: Test * suite =
CppUnit :: T e s t F a c t o r y R e g i s t r y :: getRegistry (). makeTest ();
// Adds the test to the list of test to run
CppUnit :: TextUi :: TestRunner runner ;
runner . addTest ( suite );
// Change the default o u t p u t t e r to a c o m p i l e r error format o u t p u t t e r
runner . setOutputter ( new CppUnit :: C o m p i l e r O u t p u t t e r ( & runner . result () ,
std :: cerr ) );
// Run the tests .
return runner . run ();
}
39. CPPUnit - Macros
class TestData : public CppUnit :: TestFixture
{
C P P U N I T_ T ES T _S UI T E ( TestData );
CPPUNIT_TEST ( testCon s tr uc to r );
CPPUNIT_TEST ( t e s t D i f e r e n c a A n o s _ M e s M e n o r );
CPPUNIT_TEST ( t e s t D i f e r e n c a A n o s _ M e s M a i o r );
CPPUNIT_TEST ( t e s t D i f e r e n c a A n o s _ M e s m o M e s D i a M e n o r );
CPPUNIT_TEST ( t e s t D i f e r e n c a A n o s _ M e s m o M e s D i a M a i o r );
CPPUNIT_TEST ( t e s t D i f e r e n c a A n o s _ M e s m o s M e s D i a );
CPPUNIT_TEST ( t e s t D i f e r e n c a A n o s _ A n i v e r s a r i o S i m a o );
CPPUNIT_TEST ( t e s t D i f e r e n c a A n o s _ A n i v e r s a r i o E i s t e i n );
CPPUNIT_TEST ( t e s t D i f e r e n c a A n o s _ A n i v e r s a r i o N e w t o n );
CPPUNIT_TEST ( t e s t D i f e r e n c a D i a s _ B i s s e x t o M e s M e n o r );
CPPUNIT_TEST ( t e s t D i f e r e n c a D i a s _ B i s s e x t o M e s M a i o r );
CPPUNIT_TEST ( t e s t D i f e r e n c a D i a s _ B i s s e x t o M e s m o M e s D i a M e n o r );
CPPUNIT_TEST ( t e s t D i f e r e n c a D i a s _ B i s s e x t o M e s m o M e s D i a M a i o r );
CPPUNIT_TEST ( t e s t D i f e r e n c a D i a s _ B i s s e x t o M e s m o s M e s D i a );
42. Google Test
Google Test
• Utilizado para projetos internos na Google [Google(2008b)]
• Para instalar baixar do projeto pelo site [Google(2008a)] ou ...
43. Google Test
Google Test
• Utilizado para projetos internos na Google [Google(2008b)]
• Para instalar baixar do projeto pelo site [Google(2008a)] ou ...
• Instalar via gerenciador de pacotes(linux/debian)
# aptitude install libgtest-dev libgtest0
44. Google Test
Google Test
• Utilizado para projetos internos na Google [Google(2008b)]
• Para instalar baixar do projeto pelo site [Google(2008a)] ou ...
• Instalar via gerenciador de pacotes(linux/debian)
# aptitude install libgtest-dev libgtest0
• Utilizada para Algoritmos [DAINF - UTFPR(2011a)] / CodingDojo
[Dojo-PR(2010)]
45. Quem est´ usando?
a
• Os projetos Chromium (por tr´s do navegador Chrome e Chrome
a
OS)
46. Quem est´ usando?
a
• Os projetos Chromium (por tr´s do navegador Chrome e Chrome
a
OS)
• O compilador LLVM
47. Quem est´ usando?
a
• Os projetos Chromium (por tr´s do navegador Chrome e Chrome
a
OS)
• O compilador LLVM
• Protocol Buffers (formato de intercambio de dados do Google)
48. Google Test - Caracter´
ısticas
Cartilha ou Como come¸ar? [Google(2008c)]
c
• Permite rodar testes isoladamente
49. Google Test - Caracter´
ısticas
Cartilha ou Como come¸ar? [Google(2008c)]
c
• Permite rodar testes isoladamente
• Agrupa testes relacionados em casos de teste (Test Cases)
50. Google Test - Caracter´
ısticas
Cartilha ou Como come¸ar? [Google(2008c)]
c
• Permite rodar testes isoladamente
• Agrupa testes relacionados em casos de teste (Test Cases)
• Funciona em v´rios sistemas operacionais e com v´rios compiladores
a a
51. Google Test - Caracter´
ısticas
Cartilha ou Como come¸ar? [Google(2008c)]
c
• Permite rodar testes isoladamente
• Agrupa testes relacionados em casos de teste (Test Cases)
• Funciona em v´rios sistemas operacionais e com v´rios compiladores
a a
• N˜o ´ interrompido nas falhas, permitindo corrigir v´rios bugs/testes
a e a
num unico ciclo de execu¸˜o-edi¸˜o-compila¸˜o
´ ca ca ca
52. Google Test - Caracter´
ısticas
Cartilha ou Como come¸ar? [Google(2008c)]
c
• Permite rodar testes isoladamente
• Agrupa testes relacionados em casos de teste (Test Cases)
• Funciona em v´rios sistemas operacionais e com v´rios compiladores
a a
• N˜o ´ interrompido nas falhas, permitindo corrigir v´rios bugs/testes
a e a
num unico ciclo de execu¸˜o-edi¸˜o-compila¸˜o
´ ca ca ca
• Automaticamente mant´m registro dos testes definidos
e
53. Google Test - Caracter´
ısticas
Cartilha ou Como come¸ar? [Google(2008c)]
c
• Permite rodar testes isoladamente
• Agrupa testes relacionados em casos de teste (Test Cases)
• Funciona em v´rios sistemas operacionais e com v´rios compiladores
a a
• N˜o ´ interrompido nas falhas, permitindo corrigir v´rios bugs/testes
a e a
num unico ciclo de execu¸˜o-edi¸˜o-compila¸˜o
´ ca ca ca
• Automaticamente mant´m registro dos testes definidos
e
• Permite o reuso de recursos compartilhados entre os testes
54. Google Test - Rodando testes isolados
// Google GTest F r a m e w o r k Example
// To COMPILE IT
// g ++ t e s t _ a r v o r e . cpp - l g t e s t _ m a i n - pthread -o t e s t _ a r v o r e
// TO RUN
// ./ t e s t _ a r v o r e
//
// TO FILTER TEST E X E C U T I O N
// ./ t e s t _ a r v o r e -- gtest - filter = A r v o r e T e s t . Insere
//
# include < gtest / gtest .h >
# include " arvore . cpp "
...
TEST_F ( ArvoreTest , Insere ) {
55. Google Test - Test Case
// ./ t e s t _ a r v o r e -- gtest - filter = A r v o r e T e s t . Insere
//
# include < gtest / gtest .h >
# include " arvore . cpp "
namespace {
// The fixture for testing class Arvore .
class ArvoreTest : public :: testing :: Test {
...
TEST_F ( ArvoreTest , R e m o v e R a i z S e m F i l h o s ) {
ostringstream impressao ;
impressao << " Arvore vazia , nada para imprimir " << endl ;
arvore_insere (5);
arvore_remove (5);
ASSERT_EQ ( impressao . str () , arvore_texto ());
}
56. Google Test - N˜o ´ interrompido
a e
[==========] Running 17 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 17 tests from ArvoreTest
[ RUN ] ArvoreTest.Insere
test_arvore.cpp:81: Failure
...
[ FAILED ] ArvoreTest.Insere (7 ms)
[ RUN ] ArvoreTest.CriaArvoreAltura3
[ OK ] ArvoreTest.CriaArvoreAltura3 (0 ms)
[ RUN ] ArvoreTest.RemoveNo2FilhosEsquerda
...
57. Google Test - Registro autom´tico
a
int main ( int argc , char ** argv ) {
:: testing :: InitGoogleTes t (& argc , argv );
return RUN_ALL_TESTS ();
}
58. Google Test - Reuso
ArvoreTest () {
// You can do set - up work for each test here .
}
...
virtual void SetUp () {
// Code here will be called i m m e d i a t e l y after the c o n s t r u c t o r ( right
// before each test ).
}
59. Google Test - Asser¸˜es
co
B´sicos
a
• ASSERT TRUE(condi¸˜o); EXPECT TRUE(condi¸˜o);
ca ca
• ASSERT FALSE(condi¸˜o); EXPECT FALSE(condi¸˜o);
ca ca
62. Google Test - Exce¸˜es
co
• ASSERT THROW(comando, tipo exce¸˜o);
ca
EXPECT THROW(comando, tipo exce¸˜o);
ca
• ASSERT ANY THROW(comando);
EXPECT ANY THROW(comando);
• ASSERT NO THROW(comando);
EXPECT NO THROW(comando);
63. Google Test - Compara¸˜o de n´meros ponto flutuante
ca u
• ASSERT FLOAT EQ(esperado, atual);
EXPECT FLOAT EQ(esperado, atual);
• ASSERT DOUBLE EQ(esperado, atual);
EXPECT DOUBLE EQ(esperado, atual);
67. Agradecimentos
• Adolfo Gustavo Serra Seca Neto - Orientador
• Tania Mezzadri - Algoritmos
• Jean Sim˜o e Jo˜o Alberto Fabro - Programa¸˜o Avan¸ada
a a ca c
68. Agradecimentos
• Adolfo Gustavo Serra Seca Neto - Orientador
• Tania Mezzadri - Algoritmos
• Jean Sim˜o e Jo˜o Alberto Fabro - Programa¸˜o Avan¸ada
a a ca c
• Henrique Pereira(@ikkebr) e Gabriel Oliveira(@GpaOliveira)
69. Agradecimentos
• Adolfo Gustavo Serra Seca Neto - Orientador
• Tania Mezzadri - Algoritmos
• Jean Sim˜o e Jo˜o Alberto Fabro - Programa¸˜o Avan¸ada
a a ca c
• Henrique Pereira(@ikkebr) e Gabriel Oliveira(@GpaOliveira)
• Arthur Furlan(@afurlan) Autor do http://va.mu
70. Agradecimentos
• Adolfo Gustavo Serra Seca Neto - Orientador
• Tania Mezzadri - Algoritmos
• Jean Sim˜o e Jo˜o Alberto Fabro - Programa¸˜o Avan¸ada
a a ca c
• Henrique Pereira(@ikkebr) e Gabriel Oliveira(@GpaOliveira)
• Arthur Furlan(@afurlan) Autor do http://va.mu
• Organizadores e Equipe da Semana Acadˆmica de Eletrˆnica e
e o
Inform´tica
a
71. Agradecimentos
• Adolfo Gustavo Serra Seca Neto - Orientador
• Tania Mezzadri - Algoritmos
• Jean Sim˜o e Jo˜o Alberto Fabro - Programa¸˜o Avan¸ada
a a ca c
• Henrique Pereira(@ikkebr) e Gabriel Oliveira(@GpaOliveira)
• Arthur Furlan(@afurlan) Autor do http://va.mu
• Organizadores e Equipe da Semana Acadˆmica de Eletrˆnica e
e o
Inform´tica
a
• Ao p´blico presente.
u
72. Referencias I
Adolfo Neto.
Desenvolvimento dirigido por testes com junit.
http://va.mu/AJ50, May 2010.
URL http://va.mu/AJ50.
Baptiste Lepilleur.
SourceForge.net: QtTestRunner - cppunit.
http://va.mu/oDe, 2002a.
URL http://va.mu/oDe.
[Online; accessed 13-June-2011].
Baptiste Lepilleur.
SourceForge.net: MfcTestRunner - cppunit.
http://va.mu/oDN, 2002b.
URL http://va.mu/oDN.
[Online; accessed 13-June-2011].
73. Referencias II
Beck.
Test driven development: by example.
Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA,
2002.
ISBN 0321146530.
K. Beck.
Kent Beck’s guide to better Smalltalk.
Cambridge University Press, Cambridge, U.K. New York, 1999.
ISBN 9780521644372.
CodingDojo.
Welcome to the coding dojo.
http://va.mu/3e3, 2004.
URL http://va.mu/3e3.
[Online; accessed 13-June-2011].
74. Referencias III
DAINF - UTFPR.
Ement´rios das disciplinas - DAINF-Departamento acadˆmico de
a e
inform´tica - Algoritmos e Estruturas de Dados (CABS-001).
a
http://va.mu/oLH, 2011a.
URL http://va.mu/oLH.
[Online; accessed 13-June-2011].
DAINF - UTFPR.
Ement´rios das disciplinas - DAINF-Departamento acadˆmico de
a e
inform´tica - Programa¸˜o Avan¸ada (CABS-002).
a ca c
http://va.mu/oNA, 2011b.
URL http://va.mu/oNA.
[Online; accessed 13-June-2011].
Dojo-PR.
Dojo-parana’s profile - GitHub.
https://github.com/dojo-parana, 28 May 2010.
URL https://github.com/dojo-parana.
[Online; accessed 13-June-2011].
75. Referencias IV
M. Feathers.
SourceForge.net: cppunit.
http://va.mu/oNB, 2002a.
URL http://va.mu/oNB.
[Online; accessed 13-June-2011].
M. Feathers.
SourceForge.net: cppunit download.
http://va.mu/oND, 2002b.
URL http://va.mu/oND.
[Online; accessed 13-June-2011].
M. Feathers.
SourceForge.net: cppunit what is.
http://va.mu/oNE, 2002c.
URL http://va.mu/oNE.
[Online; accessed 13-June-2011].
76. Referencias V
P. S. Foundation.
25.3. unittest - unit testing framework - python v2.7.1
documentation.
http://va.mu/oMf, 2001.
URL http://va.mu/oMf.
[Online; accessed 13-June-2011].
Google.
Downloads - googletest - google c++ testing framework -
Downloads.
http://va.mu/oMg, 2008a.
URL http://va.mu/oMg.
[Online; accessed 13-June-2011].
Google.
Googletest - google c++ testing framework - home page.
http://va.mu/oMi, 2008b.
URL http://va.mu/oMi.
[Online; accessed 13-June-2011].
77. Referencias VI
Google.
V1 5 Primer - googletest - getting started with google c++ testing
framework.
http://va.mu/oNF, 2008c.
URL http://va.mu/oNF.
[Online; accessed 13-June-2011].
Grupy-PR.
GruPy-PR grupos do google.
http://va.mu/oMk, 2007.
URL http://va.mu/oMk.
[Online; accessed 13-June-2011].
GUD-PR.
GUD-BR-PR.
http://va.mu/3ez, 2006.
URL http://va.mu/3ez.
[Online; accessed 13-June-2011].
78. Referencias VII
R. C. Martin.
ArticleS.UncleBob.TheBowlingGameKata.
http://va.mu/oMl, 2005.
URL http://va.mu/oMl.
[Online; accessed 13-June-2011].
O. Maudal.
Test-Driven development in c - geektalk.
http://va.mu/oMm, 27 Nov. 2007.
URL http://va.mu/oMm.
[Online; accessed 13-June-2011].
Wikipedia.
Smalltalk - wikipedia, the free encyclopedia.
http://va.mu/AKLX, 1972.
URL http://va.mu/AKLX.
[Online; accessed 20-June-2011].