Last active
September 21, 2019 10:52
-
-
Save cesarvasconcelos/edb54f588b263f3fac9cdbf3f0a8f40e to your computer and use it in GitHub Desktop.
Revisions
-
cesarvasconcelos revised this gist
Sep 21, 2019 . 1 changed file with 3 additions and 4 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -40,7 +40,7 @@ public static void main( String[] args ) usarAssertionsAppSomar(); usarAssertionsInternalInvariant( 5 ); usarAssertionsInternalInvariant( -5 ); usarAssertionsControlInvariant( ESTADO_CIVIL.SOLTEIRO ); } private static void usarAssertionsAppSomar() @@ -100,10 +100,9 @@ public static void usarAssertionsPostConditions( List<Integer> lista ) assert lista.size() == size - 1 : "Houve erro na operação de remoção da lista"; } public static void usarAssertionsControlInvariant( ESTADO_CIVIL e ) { switch ( e ){ case CASADO: break; case SOLTEIRO: -
cesarvasconcelos revised this gist
Sep 21, 2019 . 1 changed file with 53 additions and 6 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,4 @@ import java.util.List; import java.util.Scanner; // vide: https://pempek.net/articles/2013/11/16/assertions-or-exceptions/ @@ -38,18 +37,28 @@ public static void main( String[] args ) // at br.edu.ifpb.AssertionTest.main(br.edu.ifpb.AssertionTest.java) // não precisa recompilar o código para passar -ea usarAssertionsAppSomar(); usarAssertionsInternalInvariant( 5 ); usarAssertionsInternalInvariant( -5 ); usarAssertionsControlInvariant(); } private static void usarAssertionsAppSomar() { String e1 = lerEntrada( "Digite o número" ); assert isEntradaNumérica( e1 ); // se for false, então java.lang.AssertionError String e2 = lerEntrada( "Digite outro número" ); assert isEntradaNumérica( e2 ) : String.join( " " , "A entrada", e2 , "não é um número!" ); // se for false, então java.lang.AssertionError System.out.println( "A soma: " + (Double.parseDouble( e1 ) + Double.parseDouble( e2 )) ); System.out.println( "Fim" ); } private static String lerEntrada( String frase ) { System.out.print( frase + ": " ); Scanner s = new Scanner( System.in ); @@ -68,4 +77,42 @@ static String lerEntrada( String frase ) return false; } } public static void usarAssertionsInternalInvariant( int x ) { if( x > 0 ){ // faça algo com x }else{ // assegurar que x == 0 e não é negativo assert( x == 0 ) : "x < 0!"; // se x < 0; assertion error será gerado } } public static void usarAssertionsPostConditions( List<Integer> lista ) { int size = lista.size(); // assuma um processamento que precisa remover algo da lista lista.remove( 0 ); // testar uma pós-condição assert lista.size() == size - 1 : "Houve erro na operação de remoção da lista"; } public static void usarAssertionsControlInvariant() { ESTADO_CIVIL estadoCivil = ESTADO_CIVIL.SOLTEIRO; switch ( estadoCivil ){ case CASADO: break; case SOLTEIRO: break; case DIVORCIADO: break; default: assert (false) : "Estado civil desconhecido"; } } } enum ESTADO_CIVIL {SOLTEIRO, CASADO, DIVORCIADO}; -
cesarvasconcelos revised this gist
Sep 21, 2019 . 1 changed file with 8 additions and 7 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -11,21 +11,22 @@ public static void main( String[] args ) // assert <boolean_expression> : <detail_expression>; // enquanto exceções são usadas para testar situações que não temos controle, // asserções são usadas para documentar e verificar premissas quanto à lógica do código; // use para verificar/documentar situações que você sabe que nunca ou sempre devem acontecer // use para verificar/documentar pós e pré-condições // com assertções, fica mais fácil rastrear um erro em uma sessão de debug // se <boolean_expression> for false, um AssertionError é lançado; // o segundo argumento é convertido para uma String e usada como texto // na mensagem de AssertionError, se for usado // não use assertions para: // testar parâmetros de métodos (pois assertions podem estar desabilitadas); // não use assertions que produzam efeitos colaterais, e.g., // se desligadas, o programa rodará de uma forma; se ligadas, de outra forma // asserções são desabilitadas por padrão e são voltadas para o desenvolvedor // devem ser não recuperáveis, fatais, e empregadas nas fases de desenv. e teste // isto é, se na fase de testes um assert for false, podemos ter mais informações // quanto ao problema; deixe as assertions ligadas no teste e debug até ter certeza // de que aquela situação não acontecerá. Quando estiver satisfeito, desligue a assertion -
cesarvasconcelos revised this gist
Sep 21, 2019 . 1 changed file with 5 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -10,7 +10,8 @@ public static void main( String[] args ) // assert <boolean_expression>; // assert <boolean_expression> : <detail_expression>; // enquanto exceções são usadas para testar situações que não temos controle, // asserções são usadas para documentar e verificar premissas quanto à lógica do código // use para verificar/documentar situações que você sabe que nunca ou sempre devem acontecer // use para verificar/documentar pós e pré-condições @@ -25,6 +26,9 @@ public static void main( String[] args ) // asserções são desabilitadas por padrão e são voltadas para o desenvolvedor // devem ser não recuperáveis, fatais, e empregadas nas fases de desenv e teste // isto é, se na fase de testes um assert for false, podemos ter mais informações // quanto ao problema; deixe as assertions ligadas no teste e debug até ter certeza // de que aquela situação não acontecerá. Quando estiver satisfeito, desligue a assertion // se não habilitar o -ea na VM options, // o programa rodará normalmente, sem exceções -
cesarvasconcelos revised this gist
Sep 21, 2019 . 1 changed file with 10 additions and 5 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -11,21 +11,26 @@ public static void main( String[] args ) // assert <boolean_expression> : <detail_expression>; // use asserções para documentar e verificar premissas quanto à lógica do código // use para verificar/documentar situações que você sabe que nunca ou sempre devem acontecer // use para verificar/documentar pós e pré-condições // se <boolean_expression> for false, um AssertionError é lançado // o segundo argumento é convertido para uma String e usada como texto // na mensagem de AssertionError // não use assertions para: // testar parâmetros de métodos (pois assertions podem não estar habilitadas) // usar testes de assertions que produzam efeitos colaterais, e.g. // de desligadas, o programa rodará de uma forma; se ligadas, de outra forma // asserções são desabilitadas por padrão e são voltadas para o desenvolvedor // devem ser não recuperáveis, fatais, e empregadas nas fases de desenv e teste // se não habilitar o -ea na VM options, // o programa rodará normalmente, sem exceções // mas, se -ea for habilitado: // Exception in thread "main" java.lang.AssertionError // at br.edu.ifpb.AssertionTest.main(br.edu.ifpb.AssertionTest.java) // não precisa recompilar o código para passar -ea String e1 = lerEntrada( "Digite o número" ); -
cesarvasconcelos revised this gist
Sep 21, 2019 . 1 changed file with 13 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -6,6 +6,19 @@ public class AssertionTest { public static void main( String[] args ) { // sintaxe: // assert <boolean_expression>; // assert <boolean_expression> : <detail_expression>; // use asserções para documentar e verificar premissas quanto à lógica do código // use para verificar pós e pré-condições // se <boolean_expression> for false, um AssertionError é lançado // o segundo argumento é convertido para uma String e usada como texto // na mensagem de AssertionError // não use assertions para: // testar parâmetros de métodos // usar testes de assertions que produzam efeitos colaterais // asserções são desabilitadas por padrão e são voltadas para o desenvolvedor // devem ser não recuperáveis, fatais, e empregadas nas fases de desenv e teste // se não habilitar o -ea na VM options, -
cesarvasconcelos revised this gist
Nov 17, 2018 . No changes.There are no files selected for viewing
-
cesarvasconcelos created this gist
Nov 17, 2018 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,48 @@ package br.edu.ifpb; import java.util.Scanner; // vide: https://pempek.net/articles/2013/11/16/assertions-or-exceptions/ public class AssertionTest { public static void main( String[] args ) { // asserções são desabilitadas por padrão e são voltadas para o desenvolvedor // devem ser não recuperáveis, fatais, e empregadas nas fases de desenv e teste // se não habilitar o -ea na VM options, // o programa rodará normalmente, sem exceções // mas, se -ea for habilitado: // Exception in thread "main" java.lang.AssertionError // at br.edu.ifpb.AssertionTest.main(br.edu.ifpb.AssertionTest.java:10) // não precisa recompilar o código para passar -ea String e1 = lerEntrada( "Digite o número" ); assert isEntradaNumérica( e1 ); // se for false, então java.lang.AssertionError String e2 = lerEntrada( "Digite outro número" ); assert isEntradaNumérica( e2 ) : "A entrada " + e2 + " não é um número!"; // se for false, então java.lang.AssertionError System.out.println( "A soma: " + Double.parseDouble( e1 ) + Double.parseDouble( e2 ) ); System.out.println( "Fim" ); } static String lerEntrada( String frase ) { System.out.print( frase + ": " ); Scanner s = new Scanner( System.in ); String entrada = s.nextLine(); return entrada; } static boolean isEntradaNumérica( String entrada ) { try { Double.parseDouble( entrada ); return true; } catch ( NumberFormatException e ) { return false; } } }