Exemple #1
0
        public void CanLexShader(string path, int tokenCount)
        {
            // Arrange.
            var lexer = new Lexer(path, File.ReadAllText(path));
            lexer.Error += (sender, args) =>
            {
                throw new Exception(args.Message);
            };

            // Act.
            var tokens = lexer.GetTokens();

            // Assert.
            Assert.That(tokens, Is.Not.Null);
            Assert.That(tokens, Has.Length.EqualTo(tokenCount));
        }
Exemple #2
0
        public void CanParseShader()
        {
            // Arrange.
            const string path = "Resources/Shaders/Flat-Diffuse.shader";
            var tokens = new Lexer(path, File.ReadAllText(path)).GetTokens();
            var parser = new ShaderParser(path, tokens);
            parser.Error += (sender, args) =>
            {
                throw new Exception(args.Message + Environment.NewLine + args.Position);
            };

            // Act.
            var shaderNode = parser.Parse();

            // Assert.
            Assert.That(shaderNode, Is.Not.Null);
            Assert.That(shaderNode.Name, Is.EqualTo("Flat"));
            Assert.That(shaderNode.Properties, Has.Count.EqualTo(2));
            Assert.That(shaderNode.Technique, Is.Not.Null);
            Assert.That(shaderNode.Technique.State, Is.Not.Null);
            Assert.That(shaderNode.Technique.State.CullMode, Is.EqualTo(CullMode.CullClockwiseFace));
            Assert.That(shaderNode.Technique.State.FillMode, Is.Null);
            Assert.That(shaderNode.Technique.State.DepthBias, Is.EqualTo(0.001f));
            Assert.That(shaderNode.Technique.State.SlopeScaleDepthBias, Is.EqualTo(0.001f));
            Assert.That(shaderNode.Technique.State.DepthBufferFunction, Is.EqualTo(CompareFunction.LessEqual));
            Assert.That(shaderNode.Technique.State.DepthBufferWriteEnable, Is.True);
            Assert.That(shaderNode.Technique.State.DepthBufferEnable, Is.False);
            Assert.That(shaderNode.Technique.State.AlphaBlendFunction, Is.EqualTo(BlendFunction.Add));
            Assert.That(shaderNode.Technique.State.AlphaDestinationBlend, Is.EqualTo(Blend.One));
            Assert.That(shaderNode.Technique.State.AlphaSourceBlend, Is.EqualTo(Blend.Zero));
            Assert.That(shaderNode.Technique.State.ColorBlendFunction, Is.EqualTo(BlendFunction.Min));
            Assert.That(shaderNode.Technique.State.ColorDestinationBlend, Is.EqualTo(Blend.SourceAlpha));
            Assert.That(shaderNode.Technique.State.ColorSourceBlend, Is.EqualTo(Blend.SourceColor));
            Assert.That(shaderNode.Technique.Surface, Is.Not.Null);
            Assert.That(shaderNode.Technique.Surface.LightingModel, Is.EqualTo("FlatShading"));
        }