// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

use fargo_test::print_hello_world;

fn main() {
    for _ in 0..6 {
        print_hello_world();
    }
}

#[cfg(test)]
mod tests {

    use fuchsia_zircon::{Channel, ChannelOpts};

    #[test]
    fn noop_test() {}

    #[test]
    fn channel_call_test() {
        // Create a pair of channels
        let (p1, p2) = Channel::create(ChannelOpts::Normal).expect("Channel::create failed");
    }
}
