# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

Feature: Step - write()

  Scenario: g_io_writeXkryoX
    Given an unsupported test
    Then nothing should happen because
      """
      We don't have a nice way to assert the remotely written file with this framework - just testing compilation.
      """

  Scenario: g_io_write_withXwriter_gryoX
    Given an unsupported test
    Then nothing should happen because
      """
      We don't have a nice way to assert the remotely written file with this framework - just testing compilation.
      """

  Scenario: g_io_writeXgraphsonX
    Given an unsupported test
    Then nothing should happen because
      """
      We don't have a nice way to assert the remotely written file with this framework - just testing compilation.
      """

  Scenario: g_io_write_withXwriter_graphsonX
    Given an unsupported test
    Then nothing should happen because
      """
      We don't have a nice way to assert the remotely written file with this framework - just testing compilation.
      """

  Scenario: g_io_writeXgraphmlX
    Given an unsupported test
    Then nothing should happen because
      """
      We don't have a nice way to assert the remotely written file with this framework - just testing compilation.
      """

  Scenario: g_io_write_withXwriter_graphmlX
    Given an unsupported test
    Then nothing should happen because
      """
      We don't have a nice way to assert the remotely written file with this framework - just testing compilation.
      """