// Path: src/main/java/com/github/mlk/junit/dynamo/DynamoDBClientWithStubbedWaiter.java
// @AllArgsConstructor
// public class DynamoDBClientWithStubbedWaiter implements AmazonDynamoDB {
//   @Delegate(types = AmazonDynamoDB.class, excludes = Exclude.class)
//   private AmazonDynamoDB wrapped;
// 
//   @Override
//   public AmazonDynamoDBWaiters waiters() {
//     return new AmazonDynamoDBWaiters(wrapped);
//   }
// 
//   interface Exclude {
//     AmazonDynamoDBWaiters waiters();
//   }
// }
// 
// Path: src/main/java/com/github/mlk/junit/rules/LocalDynamoDbRule.java
// public class LocalDynamoDbRule extends ExternalResource implements DynamoDbRule {
// 
//   private AmazonDynamoDB client;
//   private final NativeLibraryRule nativeLibraryRule;
// 
//   public LocalDynamoDbRule() {
//     nativeLibraryRule = new NativeLibraryRule(Pattern.compile(".*sqlite.*"));
//   }
// 
//   /** This returns the client returned by the local Amazon DynamoDB server.
//    * You may wish to wrap this with the DynamoDBClientWithStubbedWaiter.
//    *
//    * @see DynamoDBClientWithStubbedWaiter
//    * @return A Amazon DynamoDB client.
//    */
//   public AmazonDynamoDB getClient() {
//     return client;
//   }
// 
//   @Override
//   protected void before() throws Throwable {
//     nativeLibraryRule.before();
//     System.setProperty("sqlite4java.library.path", nativeLibraryRule.getNativeLibrariesFolder().toString());
// 
//     client = DynamoDBEmbedded.create().amazonDynamoDB();
//   }
// 
//   @Override
//   protected void after() {
//     try {
//       client.shutdown();
//     } catch (Exception e) {
//       e.printStackTrace();
//     }
//     nativeLibraryRule.after();
//   }
// }


import static java.util.Collections.singleton;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.dynamodbv2.document.Table;
import com.amazonaws.services.dynamodbv2.model.AttributeDefinition;
import com.amazonaws.services.dynamodbv2.model.CreateTableRequest;
import com.amazonaws.services.dynamodbv2.model.KeySchemaElement;
import com.amazonaws.services.dynamodbv2.model.KeyType;
import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput;
import com.amazonaws.services.dynamodbv2.model.ScalarAttributeType;
import com.amazonaws.services.dynamodbv2.model.TableDescription;
import com.github.mlk.junit.dynamo.DynamoDBClientWithStubbedWaiter;
import com.github.mlk.junit.rules.LocalDynamoDbRule;
import java.util.ArrayList;
import java.util.List;
import org.junit.Rule;
import org.junit.Test;
package com.github.mlk.junit.rules.helpers.dynamodb;



public class DynamoDBClientWithStubbedWaiterTest {

  @Rule
// Path: src/main/java/com/github/mlk/junit/dynamo/DynamoDBClientWithStubbedWaiter.java
// @AllArgsConstructor
// public class DynamoDBClientWithStubbedWaiter implements AmazonDynamoDB {
//   @Delegate(types = AmazonDynamoDB.class, excludes = Exclude.class)
//   private AmazonDynamoDB wrapped;
// 
//   @Override
//   public AmazonDynamoDBWaiters waiters() {
//     return new AmazonDynamoDBWaiters(wrapped);
//   }
// 
//   interface Exclude {
//     AmazonDynamoDBWaiters waiters();
//   }
// }
// 
// Path: src/main/java/com/github/mlk/junit/rules/LocalDynamoDbRule.java
// public class LocalDynamoDbRule extends ExternalResource implements DynamoDbRule {
// 
//   private AmazonDynamoDB client;
//   private final NativeLibraryRule nativeLibraryRule;
// 
//   public LocalDynamoDbRule() {
//     nativeLibraryRule = new NativeLibraryRule(Pattern.compile(".*sqlite.*"));
//   }
// 
//   /** This returns the client returned by the local Amazon DynamoDB server.
//    * You may wish to wrap this with the DynamoDBClientWithStubbedWaiter.
//    *
//    * @see DynamoDBClientWithStubbedWaiter
//    * @return A Amazon DynamoDB client.
//    */
//   public AmazonDynamoDB getClient() {
//     return client;
//   }
// 
//   @Override
//   protected void before() throws Throwable {
//     nativeLibraryRule.before();
//     System.setProperty("sqlite4java.library.path", nativeLibraryRule.getNativeLibrariesFolder().toString());
// 
//     client = DynamoDBEmbedded.create().amazonDynamoDB();
//   }
// 
//   @Override
//   protected void after() {
//     try {
//       client.shutdown();
//     } catch (Exception e) {
//       e.printStackTrace();
//     }
//     nativeLibraryRule.after();
//   }
// }


// Path: src/test/java/com/github/mlk/junit/rules/helpers/dynamodb/DynamoDBClientWithStubbedWaiterTest.java
import static java.util.Collections.singleton;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.dynamodbv2.document.Table;
import com.amazonaws.services.dynamodbv2.model.AttributeDefinition;
import com.amazonaws.services.dynamodbv2.model.CreateTableRequest;
import com.amazonaws.services.dynamodbv2.model.KeySchemaElement;
import com.amazonaws.services.dynamodbv2.model.KeyType;
import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput;
import com.amazonaws.services.dynamodbv2.model.ScalarAttributeType;
import com.amazonaws.services.dynamodbv2.model.TableDescription;
import com.github.mlk.junit.dynamo.DynamoDBClientWithStubbedWaiter;
import com.github.mlk.junit.rules.LocalDynamoDbRule;
import java.util.ArrayList;
import java.util.List;
import org.junit.Rule;
import org.junit.Test;

package com.github.mlk.junit.rules.helpers.dynamodb;



public class DynamoDBClientWithStubbedWaiterTest {

  @Rule
  public LocalDynamoDbRule dynamoDbRule = new LocalDynamoDbRule();