import os

from scripts.test import shared

from . import utils


class WebLimitations(utils.BinaryenTestCase):
    def test_many_params(self):
        """Test that we warn on large numbers of parameters, which Web VMs
        disallow."""

        params = '(param i32) ' * 1001
        module = f'''
        (module
         (func $foo {params}
         )
        )
        '''
        p = shared.run_process(shared.WASM_OPT + ['-o', os.devnull],
                               input=module, capture_output=True)
        self.assertIn('Some VMs may not accept this binary because it has a large number of parameters in function foo.',
                      p.stderr)

    def test_many_locals(self):
        """Test that we warn on large numbers of locals, which Web VMs
        disallow."""

        params = '(local i32) ' * 50_001
        module = f'''
        (module
         (func $foo {params}
         )
        )
        '''
        p = shared.run_process(shared.WASM_OPT + ['-o', os.devnull],
                               input=module, capture_output=True)
        self.assertIn('Some VMs may not accept this binary because it has a large number of locals in function foo.',
                      p.stderr)
