# ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========
# Licensed 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.
# ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========


def test_wc_l(env):
    env.create_file("f.txt", b"a\nb\nc\n")
    assert env.mirage("wc -l /data/f.txt").strip().split()[0] == env.native(
        "wc -l f.txt").strip().split()[0]


def test_wc_w(env):
    env.create_file("f.txt", b"hello world\nfoo\n")
    assert env.mirage("wc -w /data/f.txt").strip().split()[0] == env.native(
        "wc -w f.txt").strip().split()[0]


def test_wc_c(env):
    env.create_file("f.txt", b"hello\n")
    assert env.mirage("wc -c /data/f.txt").strip().split()[0] == env.native(
        "wc -c f.txt").strip().split()[0]


def test_wc_stdin_l(env):
    data = b"a\nb\nc\n"
    assert env.mirage("wc -l",
                      stdin=data).strip() == env.native("wc -l",
                                                        stdin=data).strip()


def test_wc_default_counts(env):
    env.create_file("f.txt", b"hello world\nfoo bar\n")
    m_parts = env.mirage("wc /data/f.txt").strip().split()
    n_parts = env.native("wc f.txt").strip().split()
    assert m_parts[:3] == n_parts[:3]


def test_wc_L(env):
    env.create_file("f.txt", b"short\na much longer line\nmed\n")
    assert env.mirage("wc -L /data/f.txt").strip().split()[0] == env.native(
        "wc -L f.txt").strip().split()[0]


def test_wc_L_stdin(env):
    data = b"short\na much longer line\nmed\n"
    assert env.mirage("wc -L",
                      stdin=data).strip() == env.native("wc -L",
                                                        stdin=data).strip()


def test_wc_L_empty(env):
    env.create_file("f.txt", b"")
    assert env.mirage("wc -L /data/f.txt").strip().split()[0] == env.native(
        "wc -L f.txt").strip().split()[0]


def test_wc_L_single_line(env):
    env.create_file("f.txt", b"hello world\n")
    assert env.mirage("wc -L /data/f.txt").strip().split()[0] == env.native(
        "wc -L f.txt").strip().split()[0]


def test_wc_m(env):
    env.create_file("f.txt", b"hello\n")
    result = env.mirage("wc -m /data/f.txt").strip().split()[0]
    native = env.native("wc -m f.txt").strip().split()[0]
    assert result == native
