content: package com.alibaba.druid.test;
  
  import com.alibaba.druid.pool.DruidDataSource;
  import junit.framework.TestCase;
  import org.junit.Assert;
  import org.nutz.dao.Chain;
  import org.nutz.dao.Dao;
  import org.nutz.dao.impl.NutDao;
  import org.nutz.trans.Atom;
  import org.nutz.trans.Trans;
  
  import javax.sql.DataSource;
  
  public class NutzTransactionTest extends TestCase {
      private DataSource dataSource;
  
      protected void setUp() throws Exception {
          DruidDataSource dataSource = new DruidDataSource();
          dataSource.setUrl("jdbc:jtds:sqlserver://192.168.1.105/petstore");
          dataSource.setUsername("sa");
          dataSource.setPassword("hello");
          dataSource.setFilters("log4j");
  
  //        BasicDataSource dataSource = new BasicDataSource();
  //        dataSource.setDriverClassName("net.sourceforge.jtds.jdbc.Driver");
  //        dataSource.setUrl("jdbc:jtds:sqlserver://192.168.1.105/petstore");
  //        dataSource.setUsername("sa");
  //        dataSource.setPassword("hello");
  
          this.dataSource = dataSource;
      }
  
      public void test_trans() throws Exception {
          Dao dao = new NutDao(dataSource);
  
          dao.clear("test");
          // doTran1(dao);
          doTran2(dao);
      }
  
      void doTran1(final Dao dao) {
          try {
              Trans.exec(new Atom() {
                  @Override
                  public void run() {
                      dao.insert("[test]", Chain.make("name", "1"));
                      throw new RuntimeException();
                  }
              });
          } catch (Exception e) {
          }
          Assert.assertEquals(0, dao.count("[test]"));
      }
  
      void doTran2(final Dao dao) {
          try {
              Trans.exec(new Atom() {
                  @Override
                  public void run() {
                      dao.insert("[test]", Chain.make("name", "1"));
                      dao.insert("[test]", Chain.make("name", "111111111111111111111111111111"));
                  }
              });
          } catch (Exception e) {
              // e.printStackTrace();
          }
          Assert.assertEquals(0, dao.count("[test]"));
      }
  }
  