tests: Fix test for VUID 01270

VUID-VkSwapchainCreateInfoKHR-surface-01270 requires that the device
support the surface, it doesn't require that you actually call
vkGetPhysicalDeviceSurfaceSupportKHR(). (You should, but that's a best
practice...)

Change the test to create a device that doesn't support surface present,
and then use it to try to create a swapchain.
diff --git a/tests/vklayertests_wsi.cpp b/tests/vklayertests_wsi.cpp
index 175a185..f4f5b9d 100644
--- a/tests/vklayertests_wsi.cpp
+++ b/tests/vklayertests_wsi.cpp
@@ -750,8 +750,8 @@
     DestroySwapchain();
 }
 
-TEST_F(VkLayerTest, NotCheckingForSurfaceSupport) {
-    TEST_DESCRIPTION("Test not calling GetPhysicalDeviceSurfaceSupportKHR");
+TEST_F(VkLayerTest, SwapchainNotSupported) {
+    TEST_DESCRIPTION("Test creating a swapchain when GetPhysicalDeviceSurfaceSupportKHR returns VK_FALSE");
 
     if (!AddSurfaceInstanceExtension()) {
         printf("%s surface extensions not supported, skipping test\n", kSkipPrefix);
@@ -775,13 +775,52 @@
         return;
     }
 
-    ASSERT_NO_FATAL_FAILURE(InitState());
+    m_errorMonitor->ExpectSuccess();
     if (!InitSurface()) {
         printf("%s Cannot create surface, skipping test\n", kSkipPrefix);
         return;
     }
     InitSwapchainInfo();
 
+    std::vector<VkQueueFamilyProperties> queue_families;
+    uint32_t count = 0;
+    vk::GetPhysicalDeviceQueueFamilyProperties(gpu(), &count, nullptr);
+    queue_families.resize(count);
+    vk::GetPhysicalDeviceQueueFamilyProperties(gpu(), &count, queue_families.data());
+
+    bool found = false;
+    uint32_t qfi = 0;
+    for (uint32_t i = 0; i < queue_families.size(); i++) {
+        VkBool32 supported = VK_FALSE;
+        vk::GetPhysicalDeviceSurfaceSupportKHR(gpu(), i, m_surface, &supported);
+        if (!supported) {
+            found = true;
+            qfi = i;
+            break;
+        }
+    }
+    m_errorMonitor->VerifyNotFound();
+
+    if (!found) {
+        printf("%s All queues support surface present, skipping test\n", kSkipPrefix);
+        return;
+    }
+    float queue_priority = 1.0f;
+    auto queue_create_info = LvlInitStruct<VkDeviceQueueCreateInfo>();
+    queue_create_info.queueFamilyIndex = qfi;
+    queue_create_info.queueCount = 1;
+    queue_create_info.pQueuePriorities = &queue_priority;
+
+    auto device_create_info = LvlInitStruct<VkDeviceCreateInfo>();
+    device_create_info.queueCreateInfoCount = 1;
+    device_create_info.pQueueCreateInfos = &queue_create_info;
+    device_create_info.enabledExtensionCount = m_device_extension_names.size();
+    device_create_info.ppEnabledExtensionNames = m_device_extension_names.data();
+
+    vk_testing::Device test_device(gpu());
+    test_device.init(device_create_info);
+
+    // try creating a swapchain, using surface info queried from the default device
     VkSwapchainCreateInfoKHR swapchain_create_info = {};
     swapchain_create_info.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR;
     swapchain_create_info.pNext = nullptr;
@@ -800,9 +839,8 @@
     swapchain_create_info.clipped = VK_FALSE;
     swapchain_create_info.oldSwapchain = 0;
 
-    // Never called GetPhysicalDeviceSurfaceSupportKHR
     m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-VkSwapchainCreateInfoKHR-surface-01270");
-    vk::CreateSwapchainKHR(device(), &swapchain_create_info, nullptr, &m_swapchain);
+    vk::CreateSwapchainKHR(test_device.handle(), &swapchain_create_info, nullptr, &m_swapchain);
     m_errorMonitor->VerifyFound();
 }