def METHOD_NAME(model, test_ds, epoch, loss_object, test_summary_writer, test_loss, test_accuracy):
    for (images, labels) in test_ds:
        # training=False is only needed if there are layers with different
        # behavior during training versus inference (e.g. Dropout).
        predictions = model(images, training=False)
        t_loss = loss_object(labels, predictions)
        test_loss(t_loss)
        test_accuracy(labels, predictions)
    with test_summary_writer.as_default():
        tf.summary.scalar('loss', test_loss.result(), step=epoch)
        tf.summary.scalar('accuracy', test_accuracy.result(), step=epoch)
    print("Test Loss: {:.4f}, Test Accuracy: {:.4f}\n".format(
        test_loss.result(), test_accuracy.result() * 100)
    )