@Test
 public void deveObterIpiComoFoiSetado() {
   final NFNotaInfoItemImposto imposto = new NFNotaInfoItemImposto();
   final NFNotaInfoItemImpostoIPI impostoIPI = FabricaDeObjetosFake.getNFNotaInfoItemImpostoIPI();
   imposto.setIpi(impostoIPI);
   Assert.assertEquals(impostoIPI, imposto.getIpi());
 }
  @Test
  public void naoDevePermitirSetarISSQNCasoICMSouIPIouIICasoEstejamSetados() {
    final NFNotaInfoItemImposto imposto1 = new NFNotaInfoItemImposto();
    imposto1.setIcms(FabricaDeObjetosFake.getNFNotaInfoItemImpostoICMS());

    try {
      imposto1.setIssqn(FabricaDeObjetosFake.getNFNotaInfoItemImpostoISSQN());
    } catch (final IllegalStateException e) {
    }
    final NFNotaInfoItemImposto imposto2 = new NFNotaInfoItemImposto();
    imposto2.setIpi(FabricaDeObjetosFake.getNFNotaInfoItemImpostoIPI());

    try {
      imposto2.setIssqn(FabricaDeObjetosFake.getNFNotaInfoItemImpostoISSQN());
    } catch (final IllegalStateException e) {
    }

    final NFNotaInfoItemImposto imposto3 = new NFNotaInfoItemImposto();
    imposto3.setImpostoImportacao(FabricaDeObjetosFake.getNFNotaInfoItemImpostoImportacao());

    try {
      imposto3.setIssqn(FabricaDeObjetosFake.getNFNotaInfoItemImpostoISSQN());
    } catch (final IllegalStateException e) {
    }
  }
 @Test
 public void devePermitirCofinsstNulo() {
   final NFNotaInfoItemImposto imposto = new NFNotaInfoItemImposto();
   imposto.setCofins(FabricaDeObjetosFake.getNFNotaInfoItemImpostoCOFINS());
   imposto.setIcms(FabricaDeObjetosFake.getNFNotaInfoItemImpostoICMS());
   imposto.setImpostoImportacao(FabricaDeObjetosFake.getNFNotaInfoItemImpostoImportacao());
   imposto.setIpi(FabricaDeObjetosFake.getNFNotaInfoItemImpostoIPI());
   imposto.setPis(FabricaDeObjetosFake.getNFNotaInfoItemImpostoPIS());
   imposto.setPisst(FabricaDeObjetosFake.getNFNotaInfoItemImpostoPISST());
   imposto.setValorTotalTributos(new BigDecimal("999999999999.99"));
   imposto.toString();
 }
 @Test(expected = IllegalStateException.class)
 public void naoDevePermitirPisNulo() {
   final NFNotaInfoItemImposto imposto = new NFNotaInfoItemImposto();
   imposto.setCofins(FabricaDeObjetosFake.getNFNotaInfoItemImpostoCOFINS());
   imposto.setCofinsst(FabricaDeObjetosFake.getNFNotaInfoItemImpostoCOFINSST());
   imposto.setIcms(FabricaDeObjetosFake.getNFNotaInfoItemImpostoICMS());
   imposto.setImpostoImportacao(FabricaDeObjetosFake.getNFNotaInfoItemImpostoImportacao());
   imposto.setIpi(FabricaDeObjetosFake.getNFNotaInfoItemImpostoIPI());
   imposto.setPisst(FabricaDeObjetosFake.getNFNotaInfoItemImpostoPISST());
   imposto.setValorTotalTributos(new BigDecimal("999999999999.99"));
   imposto.toString();
 }
 @Test
 public void devePermitirValorTotalTributosNulo() {
   final NFNotaInfoItemImposto imposto = new NFNotaInfoItemImposto();
   imposto.setCofins(FabricaDeObjetosFake.getNFNotaInfoItemImpostoCOFINS());
   imposto.setCofinsst(FabricaDeObjetosFake.getNFNotaInfoItemImpostoCOFINSST());
   imposto.setIcms(FabricaDeObjetosFake.getNFNotaInfoItemImpostoICMS());
   imposto.setImpostoImportacao(FabricaDeObjetosFake.getNFNotaInfoItemImpostoImportacao());
   imposto.setIpi(FabricaDeObjetosFake.getNFNotaInfoItemImpostoIPI());
   imposto.setPis(FabricaDeObjetosFake.getNFNotaInfoItemImpostoPIS());
   imposto.setPisst(FabricaDeObjetosFake.getNFNotaInfoItemImpostoPISST());
   imposto.setIcmsUfDestino(FabricaDeObjetosFake.getNFNotaaInfoItemImpostoICMSUFDestino());
   imposto.toString();
 }