text:
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

#nullable disable

using System.Linq;
using Microsoft.CodeAnalysis.CSharp.Test.Utilities;
using Microsoft.CodeAnalysis.Test.Utilities;
using Roslyn.Test.Utilities;
using Xunit;

namespace Microsoft.CodeAnalysis.CSharp.UnitTests.Semantics;

public partial class RawInterpolationTests : CompilingTestBase
{
    [Fact]
    public void TestSimpleInterp()
    {
        string source =
@"using System;
class Program {
    public static void Main(string[] args)
    {
        var number = 8675309;
        Console.WriteLine($""""""Jenny don\'t change your number { number }."""""");
        Console.WriteLine($""""""Jenny don\'t change your number { number , -12 }."""""");
        Console.WriteLine($""""""Jenny don\'t change your number { number , 12 }."""""");
        Console.WriteLine($""""""Jenny don\'t change your number { number :###-####}."""""");
        Console.WriteLine($""""""Jenny don\'t change your number { number , -12 :###-####}."""""");
        Console.WriteLine($""""""Jenny don\'t change your number { number , 12 :###-####}."""""");
        Console.WriteLine($""""""{number}"""""");
    }
}";
        string expectedOutput =
@"Jenny don\'t change your number 8675309.
Jenny don\'t change your number 8675309     .
Jenny don\'t change your number      8675309.
Jenny don\'t change your number 867-5309.
Jenny don\'t change your number 867-5309    .
Jenny don\'t change your number     867-5309.
8675309";
        CompileAndVerify(source, expectedOutput: expectedOutput);
    }

    [Fact]
    public void TestOnlyInterp()
    {
        string source =
@"using System;
class Program {
    public static void Main(string[] args)
    {
        var number = 8675309;
        Console.WriteLine($""""""{number}"""""");
    }
}";
        string expectedOutput =
@"8675309";
        CompileAndVerify(source, expectedOutput: expectedOutput);
    }

    [Fact]
    public void TestDoubleInterp01()
    {
        string source =
@"using System;
class Program {
    public static void Main(string[] args)
    {
        var number = 8675309;
        Console.WriteLine($""""""{number}{number}"""""");
    }
}";
        string expectedOutput =
@"86753098675309";
        CompileAndVerify(source, expectedOutput: expectedOutput);
    }

    [Fact]
    public void TestDoubleInterp02()
    {
        string source =
@"using System;
class Program {
    public static void Main(string[] args)
    {
        var number = 8675309;
        Console.WriteLine($""""""Jenny don\'t change your number { number :###-####} { number :###-####}."""""");
    }
}";
        string expectedOutput =
@"Jenny don\'t change your number 867-5309 867-5309.";
        CompileAndVerify(source, expectedOutput: expectedOutput);
    }

    [Fact]
    public void TestEmptyInterp()
    {
        string source =
@"using System;
class Program {
    public static void Main(string[] args)
    {
        Console.WriteLine($""""""Jenny don\'t change your number { /*trash*/ }."""""");
    }
}";
        CreateCompilationWithMscorlib45(source).VerifyDiagnostics(
            // (5,75): error CS1733: Expected expression
            //         Console.WriteLine($"""Jenny don\'t change your number { /*trash*/ }.""");
            Diagnostic(ErrorCode.ERR_ExpressionExpected, "").WithLocation(5, 75));
    }

    [Fact]
    public void TestHalfOpenInterp01()
    {
        string source =
@"using System;
class Program {
    public static void Main(string[] args)
    {
        Console.WriteLine($""""""Jenny don\'t change your number { """""");
    }
}";
        // too many diagnostics perhaps, but it starts the right way.
        CreateCompilationWithMscorlib45(source).VerifyDiagnostics(
            // (5,70): error CS8997: Unterminated raw string literal
            //         Console.WriteLine($"""Jenny don\'t change your number { """);
            Diagnostic(ErrorCode.ERR_UnterminatedRawString, @"
").WithLocation(5, 70),
            // (6,5): error CS8997: Unterminated raw string literal
            //     }
            Diagnostic(ErrorCode.ERR_UnterminatedRawString, "}").WithLocation(6, 5),
            // (6,6): error CS1026: ) expected
            //     }
            Diagnostic(ErrorCode.ERR_CloseParenExpected, "").WithLocation(6, 6),
            // (6,6): error CS1002: ; expected
            //     }
            Diagnostic(ErrorCode.ERR_SemicolonExpected, "").WithLocation(6, 6),
            // (7,2): error CS1513: } expected
            // }
            Diagnostic(ErrorCode.ERR_RbraceExpected, "").WithLocation(7, 2));
    }

    [Fact]
    public void TestHalfOpenInterp02()
    {
        string source =
@"using System;
class Program {
    public static void Main(string[] args)
    {
        Console.WriteLine($""""""Jenny don\'t change your number { 8675309 // """""");
    }
}";
        // too many diagnostics perhaps, but it starts the right way.
        CreateCompilationWithMscorlib45(source).VerifyDiagnostics(
            // (6,5): error CS8997: Unterminated raw string literal
            //     }
            Diagnostic(ErrorCode.ERR_UnterminatedRawString, "}").WithLocation(6, 5),
            // (6,6): error CS1026: ) expected
            //     }
            Diagnostic(ErrorCode.ERR_CloseParenExpected, "").WithLocation(6, 6),
            // (6,6): error CS1002: ; expected
            //     }
            Diagnostic(ErrorCode.ERR_SemicolonExpected, "").WithLocation(6, 6),
            // (7,2): error CS1513: } expected
            // }
            Diagnostic(ErrorCode.ERR_RbraceExpected, "").WithLocation(7, 2));
    }

    [Fact]
    public void TestHalfOpenInterp03()
    {
        string source =
@"using System;
class Program {
    public static void Main(string[] args)
    {
        Console.WriteLine($""""""Jenny don\'t change your number { 8675309 /* """""");
    }
}";
        // too many diagnostics perhaps, but it starts the right way.
        CreateCompilationWithMscorlib45(source).VerifyDiagnostics(
            // (5,63): error CS8076: Missing close delimiter '}' for interpolated expression started with '{'.
            //         Console.WriteLine($"""Jenny don\'t change your number { 8675309 /* """);
            Diagnostic(ErrorCode.ERR_UnclosedExpressionHole, "{").WithLocation(5, 63),
            // (5,73): error CS1035: End-of-file found, '*/' expected
            //         Console.WriteLine($"""Jenny don\'t change your number { 8675309 /* """);
            Diagnostic(ErrorCode.ERR_OpenEndedComment, "").WithLocation(5, 73),
            // (7,2): error CS1026: ) expected
            // }
            Diagnostic(ErrorCode.ERR_CloseParenExpected, "").WithLocation(7, 2),
            // (7,2): error CS1002: ; expected
            // }
            Diagnostic(ErrorCode.ERR_SemicolonExpected, "").WithLocation(7, 2),
            // (7,2): error CS1513: } expected
            // }
            Diagnostic(ErrorCode.ERR_RbraceExpected, "").WithLocation(7, 2),
            // (7,2): error CS1513: } expected
            // }
            Diagnostic(ErrorCode.ERR_RbraceExpected, "").WithLocation(7, 2));
    }

    [Fact]
    public void LambdaInInterp()
    {
        string source =
@"using System;
class Program
{
    static void Main(string[] args)
    {
        //Console.WriteLine(""""""jenny {0:(408) ###-####}"""""", new object[] { ((Func<int>)(() => { return number; })).Invoke() });
        Console.WriteLine($""""""jenny { ((Func<int>)(() => { return number; })).Invoke() :(408) ###-####}"""""");
    }

        static int number = 8675309;
    }
";
        string expectedOutput = @"jenny (408) 867-5309";
        CompileAndVerify(source, expectedOutput: expectedOutput);
    }

    [Fact]
    public void OneLiteral()
    {
        string source =
@"using System;
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine( $""""""Hello"""""" );
    }
}";
        string expectedOutput = @"Hello";
        var verifier = CompileAndVerify(source, expectedOutput: expectedOutput);
        verifier.VerifyIL("Program.Main", @"
{
  // Code size       11 (0xb)
  .maxstack  1
  IL_0000:  ldstr      ""Hello""
  IL_0005:  call       ""void System.Console.WriteLine(string)""
  IL_000a:  ret
}
");
    }

    [Fact]
    public void OneInsert()
    {
        string source =
@"using System;
class Program
{
    static void Main(string[] args)
    {
        var hello = $""""""Hello"""""";
        Console.WriteLine( $""""""{hello}"""""" );
    }
}";
        string expectedOutput = @"Hello";
        var verifier = CompileAndVerify(source, expectedOutput: expectedOutput);
        verifier.VerifyIL("Program.Main", @"
{
  // Code size       20 (0x14)
  .maxstack  2
  IL_0000:  ldstr      ""Hello""
  IL_0005:  dup
  IL_0006:  brtrue.s   IL_000e
  IL_0008:  pop
  IL_0009:  ldstr      """"
  IL_000e:  call       ""void System.Console.WriteLine(string)""
  IL_0013:  ret
}
");
    }

    [Fact]
    public void TwoInserts()
    {
        string source =
@"using System;
class Program
{
    static void Main(string[] args)
    {
        var hello = $""""""Hello"""""";
        var world = $""""""world"""""" ;
        Console.WriteLine( $""""""{hello}, { world }."""""" );
    }
}";
        string expectedOutput = @"Hello, world.";
        CompileAndVerify(source, expectedOutput: expectedOutput);
    }

    [Fact]
    public void TwoInserts02()
    {
        string source =
@"using System;
class Program
{
    static void Main(string[] args)
    {
        var hello = ""Hello"";
        var world = ""world"";
        Console.WriteLine( $""""""
                            {
                                    hello
                            },
{
                            world }.
                            """""" );
    }
}";
        string expectedOutput = @"Hello,
world.";
        CompileAndVerify(source, expectedOutput: expectedOutput);
    }

    [Fact, WorkItem(306, "https://github.com/dotnet/roslyn/issues/306"), WorkItem(308, "https://github.com/dotnet/roslyn/issues/308")]
    public void DynamicInterpolation()
    {
        string source =
@"using System;
using System.Linq.Expressions;
class Program
{
    static void Main(string[] args)
    {
        dynamic nil = null;
        dynamic a = new string[] {""""""Hello"""""", """"""world""""""};
        Console.WriteLine($""""""<{nil}>"""""");
        Console.WriteLine($""""""<{a}>"""""");
    }
    Expression<Func<string>> M(dynamic d) {
        return () => $""""""Dynamic: {d}"""""";
    }
}";
        string expectedOutput = @"<>
<System.String[]>";
        var verifier = CompileAndVerify(source, new[] { CSharpRef }, expectedOutput: expectedOutput).VerifyDiagnostics();
    }

    [Fact]
    public void UnclosedInterpolation01()
    {
        string source =
@"using System;
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine( $""""""{"""""" );
    }
}";
        CreateCompilationWithMscorlib45(source).VerifyDiagnostics(
            // (6,39): error CS8997: Unterminated raw string literal
            //         Console.WriteLine( $"""{""" );
            Diagnostic(ErrorCode.ERR_UnterminatedRawString, @"
").WithLocation(6, 39),
            // (7,5): error CS8997: Unterminated raw string literal
            //     }
            Diagnostic(ErrorCode.ERR_UnterminatedRawString, "}").WithLocation(7, 5),
            // (7,6): error CS1026: ) expected
            //     }
            Diagnostic(ErrorCode.ERR_CloseParenExpected, "").WithLocation(7, 6),
            // (7,6): error CS1002: ; expected
            //     }
            Diagnostic(ErrorCode.ERR_SemicolonExpected, "").WithLocation(7, 6),
            // (8,2): error CS1513: } expected
            // }
            Diagnostic(ErrorCode.ERR_RbraceExpected, "").WithLocation(8, 2));
    }

    [Fact]
    public void UnclosedInterpolation02()
    {
        string source =
@"class Program
{
    static void Main(string[] args)
    {
        var x = $"""""";";
        // The precise error messages are not important, but this must be an error.
        CreateCompilationWithMscorlib45(source).VerifyDiagnostics(
                // (5,21): error CS8997: Unterminated raw string literal
                //         var x = $""";
                Diagnostic(ErrorCode.ERR_UnterminatedRawString, ";").WithLocation(5, 21),
                // (5,22): error CS1002: ; expected
                //         var x = $""";
                Diagnostic(ErrorCode.ERR_SemicolonExpected, "").WithLocation(5, 22),
                // (5,22): error CS1513: } expected
                //         var x = $""";
                Diagnostic(ErrorCode.ERR_RbraceExpected, "").WithLocation(5, 22),
                // (5,22): error CS1513: } expected
                //         var x = $""";
                Diagnostic(ErrorCode.ERR_RbraceExpected, "").WithLocation(5, 22));
    }

    [Fact]
    public void EmptyFormatSpecifier()
    {
        string source =
@"using System;
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine( $""""""{3:}"""""" );
    }
}";
        CreateCompilationWithMscorlib45(source).VerifyDiagnostics(
            // (6,34): error CS8089: Empty format specifier.
            //         Console.WriteLine( $"""{3:}""" );
            Diagnostic(ErrorCode.ERR_EmptyFormatSpecifier, ":").WithLocation(6, 34));
    }

    [Fact]
    public void TrailingSpaceInFormatSpecifier()
    {
        string source =
@"using System;
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine( $""""""{3:d }"""""" );
    }
}";
        CreateCompilationWithMscorlib45(source).VerifyDiagnostics(
            // (6,34): error CS8088: A format specifier may not contain trailing whitespace.
            //         Console.WriteLine( $"""{3:d }""" );
            Diagnostic(ErrorCode.ERR_TrailingWhitespaceInFormatSpecifier, ":d ").WithLocation(6, 34));
    }

    [Fact]
    public void TrailingSpaceInFormatSpecifier02()
    {
        string source =
@"using System;
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine( $""""""{3:d
}"""""" );
    }
}";
        CreateCompilationWithMscorlib45(source).VerifyDiagnostics(
            // (6,34): error CS8088: A format specifier may not contain trailing whitespace.
            //         Console.WriteLine( $"""{3:d
            Diagnostic(ErrorCode.ERR_TrailingWhitespaceInFormatSpecifier, @":d
").WithLocation(6, 34));
    }

    [Fact]
    public void MissingInterpolationExpression01()
    {
        string source =
@"using System;
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine( $""""""{ }"""""" );
    }
}";
        CreateCompilationWithMscorlib45(source).VerifyDiagnostics(
                // (6,34): error CS1733: Expected expression
                //         Console.WriteLine( $"""{ }""" );
                Diagnostic(ErrorCode.ERR_ExpressionExpected, "").WithLocation(6, 34));
    }

    [Fact]
    public void MissingInterpolationExpression02()
    {
        string source =
@"using System;
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine( $""""""{ }"""""" );
    }
}";
        CreateCompilationWithMscorlib45(source).VerifyDiagnostics(
                // (6,34): error CS1733: Expected expression
                //         Console.WriteLine( $"""{ }""" );
                Diagnostic(ErrorCode.ERR_ExpressionExpected, "").WithLocation(6, 34));
    }

    [Fact]
    public void MissingInterpolationExpression03()
    {
        string source =
@"using System;
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine( ";
        var normal = "$\"\"\"";
        // ensure reparsing of interpolated string token is precise in error scenarios (assertions do not fail)
        Assert.True(SyntaxFactory.ParseSyntaxTree(source + normal).GetDiagnostics().Any(d => d.Severity == DiagnosticSeverity.Error));
        Assert.True(SyntaxFactory.ParseSyntaxTree(source + normal + " ").GetDiagnostics().Any(d => d.Severity == DiagnosticSeverity.Error));
        Assert.True(SyntaxFactory.ParseSyntaxTree(source + normal + "{").GetDiagnostics().Any(d => d.Severity == DiagnosticSeverity.Error));
        Assert.True(SyntaxFactory.ParseSyntaxTree(source + normal + "{ ").GetDiagnostics().Any(d => d.Severity == DiagnosticSeverity.Error));
    }

    [Fact]
    public void MisplacedNewline01()
    {
        string source =
@"using System;
class Program
{
    static void Main(string[] args)
    {
        var s = $""""""{ @""
"" }
            """""";
    }
}";
        // The precise error messages are not important, but this must be an error.
        Assert.True(SyntaxFactory.ParseSyntaxTree(source).GetDiagnostics().Any(d => d.Severity == DiagnosticSeverity.Error));
    }

    [Fact]
    public void MisplacedNewline02()
    {
        string source =
@"using System;
class Program
{
    static void Main(string[] args)
    {
        var s = $""""""{ @""
""}
            """""";
    }
}";
        // The precise error messages are not important, but this must be an error.
        Assert.True(SyntaxFactory.ParseSyntaxTree(source).GetDiagnostics().Any(d => d.Severity == DiagnosticSeverity.Error));
    }

    [Fact]
    public void PreprocessorInsideInterpolation()
    {
        string source =
@"class Program
{
    static void Main()
    {
        var s = $""""""{
#region :
#endregion
0
}"""""";
    }
}";
        // The precise error messages are not important, but this must be an error.
        Assert.True(SyntaxFactory.ParseSyntaxTree(source).GetDiagnostics().Any(d => d.Severity == DiagnosticSeverity.Error));
    }

    [Fact]
    public void EscapesAreNotEscapes()
    {
        string source =
@"class Program
{
    static void Main()
    {
        var s1 = $"""""" \u007B """""";
        var s2 = $"""""" \u007D"""""";
    }
}";
        CreateCompilationWithMscorlib45(source).VerifyDiagnostics();
    }

    [Fact, WorkItem(1119878, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1119878")]
    public void NoFillIns01()
    {
        string source =
@"class Program
{
    static void Main()
    {
        System.Console.Write($$""""""{ x }"""""");
        System.Console.WriteLine($""""""This is a test"""""");
    }
}";
        string expectedOutput = @"{ x }This is a test";
        CompileAndVerify(source, expectedOutput: expectedOutput);
    }

    [Fact]
    public void BadAlignment()
    {
        string source =
@"class Program
{
    static void Main()
    {
        var s = $""""""{1,1E10}"""""";
        var t = $""""""{1,(int)1E10}"""""";
    }
}";
        CreateCompilationWithMscorlib45(source).VerifyDiagnostics(
            // (5,24): error CS0266: Cannot implicitly convert type 'double' to 'int'. An explicit conversion exists (are you missing a cast?)
            //         var s = $"""{1,1E10}""";
            Diagnostic(ErrorCode.ERR_NoImplicitConvCast, "1E10").WithArguments("double", "int").WithLocation(5, 24),
            // (5,24): error CS0150: A constant value is expected
            //         var s = $"""{1,1E10}""";
            Diagnostic(ErrorCode.ERR_ConstantExpected, "1E10").WithLocation(5, 24),
            // (6,24): error CS0221: Constant value '10000000000' cannot be converted to a 'int' (use 'unchecked' syntax to override)
            //         var t = $"""{1,(int)1E10}""";
            Diagnostic(ErrorCode.ERR_ConstOutOfRangeChecked, "(int)1E10").WithArguments("10000000000", "int").WithLocation(6, 24),
            // (6,24): error CS0150: A constant value is expected
            //         var t = $"""{1,(int)1E10}""";
            Diagnostic(ErrorCode.ERR_ConstantExpected, "(int)1E10").WithLocation(6, 24));
    }

    [Fact]
    public void NestedInterpolated()
    {
        string source =
@"using System;
class Program
{
    static void Main(string[] args)
    {
        var s = $""""""{$""""""{1}""""""}"""""";
        Console.WriteLine(s);
        }
    }";
        string expectedOutput = @"1";
        CompileAndVerify(source, expectedOutput: expectedOutput);
    }

    // Since the platform type System.FormattableString is not yet in our platforms (at the
    // time of writing), we explicitly include the required platform types into the sources under test.
    private const string formattableString = @"
/*============================================================
**
** Class:  FormattableString
**
**
** Purpose: implementation of the FormattableString
** class.
**
===========================================================*/
namespace System
{
    /// <summary>
    /// A composite format string along with the arguments to be formatted. An instance of this
    /// type may result from the use of the C# or VB language primitive ""interpolated string"".
    /// </summary>
    public abstract class FormattableString : IFormattable
    {
        /// <summary>
        /// The composite format string.
        /// </summary>
        public abstract string Format { get; }

        /// <summary>
        /// Returns an object array that contains zero or more objects to format. Clients should not
        /// mutate the contents of the array.
        /// </summary>
        public abstract object[] GetArguments();

        /// <summary>
        /// The number of arguments to be formatted.
        /// </summary>
        public abstract int ArgumentCount { get; }

        /// <summary>
        /// Returns one argument to be formatted from argument position <paramref name=""index""/>.
        /// </summary>
        public abstract object GetArgument(int index);

        /// <summary>
        /// Format to a string using the given culture.
        /// </summary>
        public abstract string ToString(IFormatProvider formatProvider);

        string IFormattable.ToString(string ignored, IFormatProvider formatProvider)
        {
            return ToString(formatProvider);
        }

        /// <summary>
        /// Format the given object in the invariant culture. This static method may be
        /// imported in C# by
        /// <code>
        /// using static System.FormattableString;
        /// </code>.
        /// Within the scope
        /// of that import directive an interpolated string may be formatted in the
        /// invariant culture by writing, for example,
        /// <code>
        /// Invariant($""{{ lat = {latitude}; lon = {longitude} }}"")
        /// </code>
        /// </summary>
        public static string Invariant(FormattableString formattable)
        {
            if (formattable == null)
            {
                throw new ArgumentNullException(""formattable"");
            }

            return formattable.ToString(Globalization.CultureInfo.InvariantCulture);
        }

        public override string ToString()
        {
            return ToString(Globalization.CultureInfo.CurrentCulture);
        }
    }
}

/*============================================================
**
** Class:  FormattableStringFactory
**
**
** Purpose: implementation of the FormattableStringFactory
** class.
**
===========================================================*/
namespace System.Runtime.CompilerServices
{
    /// <summary>
    /// A factory type used by compilers to create instances of the type <see cref=""FormattableString""/>.
    /// </summary>
    public static class FormattableStringFactory
    {
        /// <summary>
        /// Create a <see cref=""FormattableString""/> from a composite format string and object
        /// array containing zero or more objects to format.
        /// </summary>
        public static FormattableString Create(string format, params object[] arguments)
        {
            if (format == null)
            {
                throw new ArgumentNullException(""format"");
            }

            if (arguments == null)
            {
                throw new ArgumentNullException(""arguments"");
            }

            return new ConcreteFormattableString(format, arguments);
        }

        private sealed class ConcreteFormattableString : FormattableString
        {
            private readonly string _format;
            private readonly object[] _arguments;

            internal ConcreteFormattableString(string format, object[] arguments)
            {
                _format = format;
                _arguments = arguments;
            }

            public override string Format { get { return _format; } }
            public override object[] GetArguments() { return _arguments; }
            public override int ArgumentCount { get { return _arguments.Length; } }
            public override object GetArgument(int index) { return _arguments[index]; }
            public override string ToString(IFormatProvider formatProvider) { return string.Format(formatProvider, Format, _arguments); }
        }
    }
}
";

    [Fact]
    public void TargetType01()
    {
        string source =
@"using System;
class Program {
    public static void Main(string[] args)
    {
        IFormattable f = $""""""test"""""";
        Console.Write(f is System.FormattableString);
    }
}";
        CompileAndVerify(source + formattableString, expectedOutput: "True");
    }

    [Fact]
    public void TargetType02()
    {
        string source =
@"using System;
interface I1 { void M(String s); }
interface I2 { void M(FormattableString s); }
interface I3 { void M(IFormattable s); }
interface I4 : I1, I2 {}
interface I5 : I1, I3 {}
interface I6 : I2, I3 {}
interface I7 : I1, I2, I3 {}
class C : I1, I2, I3, I4, I5, I6, I7
{
    public void M(String s) { Console.Write(1); }
    public void M(FormattableString s) { Console.Write(2); }
    public void M(IFormattable s) { Console.Write(3); }
}
class Program {
    public static void Main(string[] args)
    {
        C c = new C();
        ((I1)c).M($"""""" """""");
        ((I2)c).M($"""""" """""");
        ((I3)c).M($"""""" """""");
        ((I4)c).M($"""""" """""");
        ((I5)c).M($"""""" """""");
        ((I6)c).M($"""""" """""");
        ((I7)c).M($"""""" """""");
        ((C)c).M($"""""" """""");
    }
}";
        CompileAndVerify(source + formattableString, expectedOutput: "12311211");
    }

    [Fact]
    public void MissingHelper()
    {
        string source =
@"using System;
class Program {
    public static void Main(string[] args)
    {
        IFormattable f = $""""""test"""""";
    }
}";
        CreateCompilationWithMscorlib40(source).VerifyEmitDiagnostics(
                // (5,26): error CS0518: Predefined type 'System.Runtime.CompilerServices.FormattableStringFactory' is not defined or imported
                //         IFormattable f = $"""test""";
                Diagnostic(ErrorCode.ERR_PredefinedTypeNotFound, @"$""""""test""""""").WithArguments("System.Runtime.CompilerServices.FormattableStringFactory").WithLocation(5, 26));
    }

    [Fact]
    public void AsyncInterp()
    {
        string source =
@"using System;
using System.Threading.Tasks;
class Program {
    public static void Main(string[] args)
    {
        Task<string> hello = Task.FromResult(""""""Hello"""""");
        Task<string> world = Task.FromResult(""""""world"""""");
        M(hello, world).Wait();
    }
    public static async Task M(Task<string> hello, Task<string> world)
    {
        Console.WriteLine($""""""{ await hello }, { await world }!"""""");
    }
}";
        CompileAndVerify(
            source, references: new[] { MscorlibRef_v4_0_30316_17626, SystemRef_v4_0_30319_17929, SystemCoreRef_v4_0_30319_17929 }, expectedOutput: "Hello, world!", targetFramework: TargetFramework.Empty);
    }

    [Fact]
    public void AlignmentExpression()
    {
        string source =
@"using System;
class Program {
    public static void Main(string[] args)
    {
        Console.WriteLine($""""""X = { 123 , -(3+4) }."""""");
    }
}";
        CompileAndVerify(source + formattableString, expectedOutput: "X = 123    .");
    }

    [Fact]
    public void AlignmentMagnitude()
    {
        string source =
@"using System;
class Program {
    public static void Main(string[] args)
    {
        Console.WriteLine($""""""X = { 123 , (32768) }."""""");
        Console.WriteLine($""""""X = { 123 , -(32768) }."""""");
        Console.WriteLine($""""""X = { 123 , (32767) }."""""");
        Console.WriteLine($""""""X = { 123 , -(32767) }."""""");
        Console.WriteLine($""""""X = { 123 , int.MaxValue }."""""");
        Console.WriteLine($""""""X = { 123 , int.MinValue }."""""");
    }
}";
        CreateCompilation(source).VerifyDiagnostics(
            // (5,44): warning CS8094: Alignment value 32768 has a magnitude greater than 32767 and may result in a large formatted string.
            //         Console.WriteLine($"""X = { 123 , (32768) }.""");
            Diagnostic(ErrorCode.WRN_AlignmentMagnitude, "32768").WithArguments("32768", "32767").WithLocation(5, 44),
            // (6,43): warning CS8094: Alignment value -32768 has a magnitude greater than 32767 and may result in a large formatted string.
            //         Console.WriteLine($"""X = { 123 , -(32768) }.""");
            Diagnostic(ErrorCode.WRN_AlignmentMagnitude, "-(32768)").WithArguments("-32768", "32767").WithLocation(6, 43),
            // (9,43): warning CS8094: Alignment value 2147483647 has a magnitude greater than 32767 and may result in a large formatted string.
            //         Console.WriteLine($"""X = { 123 , int.MaxValue }.""");
            Diagnostic(ErrorCode.WRN_AlignmentMagnitude, "int.MaxValue").WithArguments("2147483647", "32767").WithLocation(9, 43),
            // (10,43): warning CS8094: Alignment value -2147483648 has a magnitude greater than 32767 and may result in a large formatted string.
            //         Console.WriteLine($"""X = { 123 , int.MinValue }.""");
            Diagnostic(ErrorCode.WRN_AlignmentMagnitude, "int.MinValue").WithArguments("-2147483648", "32767").WithLocation(10, 43));
    }

    [WorkItem(1097388, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1097388")]
    [Fact]
    public void InterpolationExpressionMustBeValue01()
    {
        string source =
@"using System;
class Program {
    public static void Main(string[] args)
    {
        Console.WriteLine($""""""X = { String }."""""");
        Console.WriteLine($""""""X = { null }."""""");
    }
}";
        CreateCompilation(source).VerifyDiagnostics(
                // (5,37): error CS0119: 'string' is a type, which is not valid in the given context
                //         Console.WriteLine($"""X = { String }.""");
                Diagnostic(ErrorCode.ERR_BadSKunknown, "String").WithArguments("string", "type").WithLocation(5, 37));
    }

    [Fact]
    public void InterpolationExpressionMustBeValue02()
    {
        string source =
@"using System;
class Program {
    public static void Main(string[] args)
    {
        Console.WriteLine($""""""X = { x=>3 }."""""");
        Console.WriteLine($""""""X = { Program.Main }."""""");
        Console.WriteLine($""""""X = { Program.Main(null) }."""""");
    }
}";

        CreateCompilation(source, parseOptions: TestOptions.RegularPreview).VerifyDiagnostics(
            // (5,37): error CS8917: The delegate type could not be inferred.
            //         Console.WriteLine($"""X = { x=>3 }.""");
            Diagnostic(ErrorCode.ERR_CannotInferDelegateType, "x=>3").WithLocation(5, 37),
            // (6,37): warning CS8974: Converting method group 'Main' to non-delegate type 'object'. Did you intend to invoke the method?
            //         Console.WriteLine($"""X = { Program.Main }.""");
            Diagnostic(ErrorCode.WRN_MethGrpToNonDel, "Program.Main").WithArguments("Main", "object").WithLocation(6, 37),
            // (7,37): error CS0029: Cannot implicitly convert type 'void' to 'object'
            //         Console.WriteLine($"""X = { Program.Main(null) }.""");
            Diagnostic(ErrorCode.ERR_NoImplicitConv, "Program.Main(null)").WithArguments("void", "object").WithLocation(7, 37));
    }

    [WorkItem(1097428, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1097428")]
    [Fact]
    public void BadCorelib01()
    {
        var text =
@"namespace System
{
    public class Object { }
    public abstract class ValueType { }
    public struct Void { }
    public struct Boolean { private Boolean m_value; Boolean Use(Boolean b) { m_value = b; return m_value; } }
    public struct Int32 { private Int32 m_value; Int32 Use(Int32 b) { m_value = b; return m_value; } }
    public struct Char { }
    public class String { }

    internal class Program
    {
        public static void Main()
        {
            var s = $""""""X = { 1 } """""";
        }
    }
}";
        CreateEmptyCompilation(text, parseOptions: TestOptions.Regular.WithNoRefSafetyRulesAttribute(), options: TestOptions.DebugExe)
        .VerifyEmitDiagnostics(new CodeAnalysis.Emit.EmitOptions(runtimeMetadataVersion: "x.y"),
            // (15,21): error CS0117: 'string' does not contain a definition for 'Format'
            //             var s = $"""X = { 1 } """;
            Diagnostic(ErrorCode.ERR_NoSuchMember, @"$""""""X = { 1 } """"""").WithArguments("string", "Format").WithLocation(15, 21));
    }

    [WorkItem(1097428, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1097428")]
    [Fact]
    public void BadCorelib02()
    {
        var text =
@"namespace System
{
    public class Object { }
    public abstract class ValueType { }
    public struct Void { }
    public struct Boolean { private Boolean m_value; Boolean Use(Boolean b) { m_value = b; return m_value; } }
    public struct Int32 { private Int32 m_value; Int32 Use(Int32 b) { m_value = b; return m_value; } }
    public struct Char { }
    public class String {
        public static Boolean Format(string format, int arg) { return true; }
    }

    internal class Program
    {
        public static void Main()
        {
            var s = $""""""X = { 1 } """""";
        }
    }
}";
        CreateEmptyCompilation(text, parseOptions: TestOptions.Regular.WithNoRefSafetyRulesAttribute(), options: TestOptions.DebugExe)
        .VerifyEmitDiagnostics(new CodeAnalysis.Emit.EmitOptions(runtimeMetadataVersion: "x.y"),
            // (17,21): error CS0029: Cannot implicitly convert type 'bool' to 'string'
            //             var s = $"""X = { 1 } """;
            Diagnostic(ErrorCode.ERR_NoImplicitConv, @"$""""""X = { 1 } """"""").WithArguments("bool", "string").WithLocation(17, 21));
    }

    [Fact]
    public void SillyCoreLib01()
    {
        var text =
@"namespace System
{
    interface IFormattable { }
    namespace Runtime.CompilerServices {
        public static class FormattableStringFactory {
            public static Bozo Create(string format, int arg) { return new Bozo(); }
        }
    }
    public class Object { }
    public abstract class ValueType { }
    public struct Void { }
    public struct Boolean { private Boolean m_value; Boolean Use(Boolean b) { m_value = b; return m_value; } }
    public struct Int32 { private Int32 m_value; Int32 Use(Int32 b) { m_value = b; return m_value; } }
    public struct Char { }
    public class String {
        public static Bozo Format(string format, int arg) { return new Bozo(); }
    }
    public class FormattableString {
    }
    public class Bozo {
        public static implicit operator string(Bozo bozo) { return ""zz""; }
        public static implicit operator FormattableString(Bozo bozo) { return new FormattableString(); }
    }

    internal class Program
    {
        public static void Main()
        {
            var s1 = $""""""X = { 1 } """""";
            FormattableString s2 = $""""""X = { 1 } """""";
        }
    }
}";
        var comp = CreateEmptyCompilation(text, parseOptions: TestOptions.Regular.WithNoRefSafetyRulesAttribute(), options: Test.Utilities.TestOptions.UnsafeReleaseDll).VerifyDiagnostics();
        var compilation = CompileAndVerify(comp, verify: Verification.Fails);
        compilation.VerifyIL("System.Program.Main",
@"{
  // Code size       35 (0x23)
  .maxstack  2
  IL_0000:  ldstr      ""X = {0} ""
  IL_0005:  ldc.i4.1
  IL_0006:  call       ""System.Bozo string.Format(string, int)""
  IL_000b:  call       ""string System.Bozo.op_Implicit(System.Bozo)""
  IL_0010:  pop
  IL_0011:  ldstr      ""X = {0} ""
  IL_0016:  ldc.i4.1
  IL_0017:  call       ""System.Bozo System.Runtime.CompilerServices.FormattableStringFactory.Create(string, int)""
  IL_001c:  call       ""System.FormattableString System.Bozo.op_Implicit(System.Bozo)""
  IL_0021:  pop
  IL_0022:  ret
}");
    }

    [WorkItem(1097386, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1097386")]
    [Fact]
    public void Syntax01()
    {
        var text =
@"using System;
class Program
{
    static void Main(string[] args)
    {
        var x = $""""""{ Math.Abs(value: 1):\}"""""";
        var y = x;
        }
    }
";
        CreateCompilation(text).VerifyDiagnostics();
    }

    [WorkItem(1097941, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1097941")]
    [Fact]
    public void Syntax02()
    {
        var text =
@"using S = System;
class C
{
    void M()
    {
        var x = $""""""{ (S:
    }
}";
        // the precise diagnostics do not matter, as long as it is an error and not a crash.
        Assert.True(SyntaxFactory.ParseSyntaxTree(text).GetDiagnostics().Any(d => d.Severity == DiagnosticSeverity.Error));
    }

    [WorkItem(1097386, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1097386")]
    [Fact]
    public void Syntax03()
    {
        var text =
@"using System;
class Program
{
    static void Main(string[] args)
    {
        var x = $""""""{ Math.Abs(value: 1):}}"""""";
        var y = x;
        }
    }
";
        CreateCompilation(text).VerifyDiagnostics(
            // (6,41): error CS8089: Empty format specifier.
            //         var x = $"""{ Math.Abs(value: 1):}}""";
            Diagnostic(ErrorCode.ERR_EmptyFormatSpecifier, ":").WithLocation(6, 41),
            // (6,43): error CS9007: Too many closing braces for raw string literal
            //         var x = $"""{ Math.Abs(value: 1):}}""";
            Diagnostic(ErrorCode.ERR_TooManyCloseBracesForRawString, "}").WithLocation(6, 43));
    }

    [WorkItem(1099105, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1099105")]
    [Fact]
    public void NoUnexpandedForm()
    {
        string source =
@"using System;
class Program {
    public static void Main(string[] args)
    {
        string[] arr1 = new string[] { """"""xyzzy"""""" };
        object[] arr2 = arr1;
        Console.WriteLine($""""""-{null}-"""""");
        Console.WriteLine($""""""-{arr1}-"""""");
        Console.WriteLine($""""""-{arr2}-"""""");
    }
}";
        CompileAndVerify(source + formattableString, expectedOutput:
@"--
-System.String[]-
-System.String[]-");
    }

    [WorkItem(1097386, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1097386")]
    [Fact]
    public void Dynamic01()
    {
        var text =
@"class C
{
    const dynamic a = a;
    string s = $""""""{0,a}"""""";
}";
        CreateCompilationWithMscorlib40AndSystemCore(text).VerifyDiagnostics(
            // (3,19): error CS0110: The evaluation of the constant value for 'C.a' involves a circular definition
            //     const dynamic a = a;
            Diagnostic(ErrorCode.ERR_CircConstValue, "a").WithArguments("C.a").WithLocation(3, 19),
            // (3,23): error CS0134: 'C.a' is of type 'dynamic'. A const field of a reference type other than string can only be initialized with null.
            //     const dynamic a = a;
            Diagnostic(ErrorCode.ERR_NotNullConstRefField, "a").WithArguments("C.a", "dynamic").WithLocation(3, 23),
            // (4,23): error CS0150: A constant value is expected
            //     string s = $"""{0,a}""";
            Diagnostic(ErrorCode.ERR_ConstantExpected, "a").WithLocation(4, 23));
    }

    [WorkItem(1099238, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1099238")]
    [Fact]
    public void Syntax04()
    {
        var text =
@"using System;
using System.Linq.Expressions;

class Program
{
    static void Main()
    {
        Expression<Func<string>> e = () => $""""""\u1{0:\u2}"""""";
        Console.WriteLine(e);
    }
}";
        CreateCompilationWithMscorlib40AndSystemCore(text).VerifyDiagnostics();
    }

    [Fact, WorkItem(1098612, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1098612")]
    public void MissingConversionFromFormattableStringToIFormattable()
    {
        var text =
@"namespace System.Runtime.CompilerServices
{
    public static class FormattableStringFactory
    {
        public static FormattableString Create(string format, params object[] arguments)
        {
            return null;
        }
    }
}

namespace System
{
    public abstract class FormattableString
    {
    }
}

static class C
{
    static void Main()
    {
        System.IFormattable i = $""""""{""""}"""""";
    }
}";
        CreateCompilationWithMscorlib40AndSystemCore(text).VerifyEmitDiagnostics(
                // (23,33): error CS0029: Cannot implicitly convert type 'FormattableString' to 'IFormattable'
                //         System.IFormattable i = $"""{""}""";
                Diagnostic(ErrorCode.ERR_NoImplicitConv, @"$""""""{""""}""""""").WithArguments("System.FormattableString", "System.IFormattable").WithLocation(23, 33));
    }

    [Fact]
    public void InterpolatedStringBeforeCSharp6()
    {
        var text = @"
class C
{
    string M()
    {
        return $""""""hello"""""";
    }
}";

        CreateCompilation(text, parseOptions: CSharpParseOptions.Default.WithLanguageVersion(LanguageVersion.CSharp5)).VerifyDiagnostics(
            // (6,16): error CS8026: Feature 'interpolated strings' is not available in C# 5. Please use language version 6 or greater.
            //         return $"""hello""";
            Diagnostic(ErrorCode.ERR_FeatureNotAvailableInVersion5, @"$""""""hello""""""").WithArguments("interpolated strings", "6").WithLocation(6, 16));
    }

    [Fact]
    public void InterpolatedStringWithReplacementBeforeCSharp6()
    {
        var text = @"
class C
{
    string M()
    {
        string other = """"""world"""""";
        return $""""""hello + {other}"""""";
    }
}";

        CreateCompilation(text, parseOptions: CSharpParseOptions.Default.WithLanguageVersion(LanguageVersion.CSharp5)).VerifyDiagnostics(
            // (6,24): error CS8026: Feature 'raw string literals' is not available in C# 5. Please use language version 11.0 or greater.
            //         string other = """world""";
            Diagnostic(ErrorCode.ERR_FeatureNotAvailableInVersion5, @"""""""world""""""").WithArguments("raw string literals", "11.0").WithLocation(6, 24),
            // (7,16): error CS8026: Feature 'interpolated strings' is not available in C# 5. Please use language version 6 or greater.
            //         return $"""hello + {other}""";
            Diagnostic(ErrorCode.ERR_FeatureNotAvailableInVersion5, @"$""""""hello + {other}""""""").WithArguments("interpolated strings", "6").WithLocation(7, 16));
    }

    [Fact, WorkItem(61355, "https://github.com/dotnet/roslyn/issues/61355")]
    public void StringFormatLowering1()
    {
        string source =
@"using System;
class Program
{
    static void Main(string[] args)
    {
        int count = 31;
        string op = ""shl"";
        var value = $$""""""
{
  // Code size        5 (0x5)
  .maxstack  2
  IL_0000:  ldarg.0
  IL_0001:  ldc.i4.s   {{count}}
  IL_0003:  {{op}}
  IL_0004:  ret
}
"""""";
        Console.WriteLine(value);
    }
}";
        var expectedOutput = @"{
  // Code size        5 (0x5)
  .maxstack  2
  IL_0000:  ldarg.0
  IL_0001:  ldc.i4.s   31
  IL_0003:  shl
  IL_0004:  ret
}";
        var verifier = CompileAndVerify(source, expectedOutput: expectedOutput);
        verifier.VerifyIL("Program.Main", @"
{
  // Code size       32 (0x20)
  .maxstack  3
  .locals init (int V_0, //count
                string V_1) //op
  IL_0000:  ldc.i4.s   31
  IL_0002:  stloc.0
  IL_0003:  ldstr      ""shl""
  IL_0008:  stloc.1
  IL_0009:  ldstr      ""{{
  // Code size        5 (0x5)
  .maxstack  2
  IL_0000:  ldarg.0
  IL_0001:  ldc.i4.s   {0}
  IL_0003:  {1}
  IL_0004:  ret
}}""
  IL_000e:  ldloc.0
  IL_000f:  box        ""int""
  IL_0014:  ldloc.1
  IL_0015:  call       ""string string.Format(string, object, object)""
  IL_001a:  call       ""void System.Console.WriteLine(string)""
  IL_001f:  ret
}");
    }
}

redpajama_set_name: RedPajamaGithub


The Bathroom Origins Tecno Project Open Towel Ring is an impressively sized unit that is crafted to hold nearly any size or style of towel desired. Beautifully and durably crafted from high-quality brass material, this unit comes in a classic and striking chrome finish that shines in any bathroom layout its installed within. A wall-mounted product that comes with concealed fixings as well, this unit features a versatile appearance that fits beautifully into any bathroom layout whether simple or modern in overall design.


Sodium is a soft, silvery-white and highly reactive metal. But who discovered sodium? This post will answer that question and also tell you a few interesting facts about sodium.
Compounds of sodium have been known since ancient times. One of these, salt, was once a very valuable spice. Roman soldiers were even paid their wages in salt. In medieval Europe, a compound of sodium (probably sodium carbonate) was used to relieve headaches. Sir Humphry Davy is credited with being the first to discover sodium as he was the first person to isolate the metal from caustic soda in 1807.
Sodium is combined with fatty acids to make soap.
Humans require 500mg of sodium per day. Most people consume a lot more than this, especially people who enjoy eating lots of salt on their food.
At room temperature, sodium is soft enough to be cut by a knife.
Commercially, sodium is obtained from the electrolysis of salt (sodium chloride).
Enjoy my posts? Follow me on Twitter!
The person who discovered sodium was a British chemist by the name, Sir Humphry Davy.
Thank you this is a seriously huge help on my chemistry project.


text:
creativity Mar. 12, 2015
Researchers Are Studying the Things People Fiddle With at Their Desks
If you are reading this at work, chances are you are employed at a think-y kind of job, one that doesn't require much physical movement beyond tapping on a keyboard or moving around a mouse. And yet, as you engage in creative thinking, you likely do so while moving around: fiddling with your jewelry, clicking up and down on a ballpoint pen, that kind of thing.
Mike Karlesky and Katherine Isbister at New York University are fascinated by the things we deskbound employees fiddle with as we work, and how those little repetitive motions may promote creative or clearer thinking. Their theory is that we need to express some kind of physical movement to get the creative juices flowing, and that this is why we fiddle with things on our desks — "like doodles at the edge of a notebook, digital workers actively think in the physical margin surrounding their software," the pair wrote recently in a presentation describing their preliminary findings.
In Praise of Spacing Out
"Changing what the body does can change our feelings, perceptions, and thoughts," Isbister wrote in an email. Eventually, Karlesky and Isbister would like to provide office workers with a kind of sampler box of what they call "fidget widgets," ideally those best suited for stoking creative thinking. "We are taking advantage of something people do already to help them focus, and figuring out ways to support this better," she added.
Take a look at some of the examples they've rounded up so far — and they'd also very much like it if you'd submit your own photos and stories at their Tumblr.
"My favorite thing at the moment is that I twirl rulers around pens. … I find that I listen better and retain the information when I am fiddling."
"I purchased this years ago at an aquarium. It is filled with some type of liquid, cool and squishy to the touch and easily flips inside-out through a hole in the middle. It keeps me mindlessly entertained for hours."
"These little rubber things on my headphones. All day."
"I roll bits of paper between my fingers. I like different kinds of paper, waxed paper, gum wrappers, coated magazine pages, and vellum. Regular copy paper is okay, too. Sometimes I'll roll up a whole sheet of paper with a happy swoosh! Ribbons and rubber bands are also nice to roll."
"I play with this headless shark when I'm thinking or on the phone. It was part of a set of Legos my children had when they were young — and then our puppy decided it would be a good chew toy! Now it is headless, with teeth marks all over it. I took it to work one day to see if I could buy a replacement part — kiddos were really upset about the chewing — and here is has stayed!"
"I always find myself fiddling with an old coat toggle. It fits so easily in the hand and all my fingers can play with it in many different positions. The spring always feels so satisfying to squash and release when stuck finding that creative breakthrough, and it always helps, even if just for a moment of procrastination!"
"Ever since I was a child, I would play with rubber bands as a sort of safety blanket; I roll them around in my hands and use them as a stress-reliever. All through my growing up, my parents would know exactly who to go to if they needed a rubber band or, even, if there was a lack of rubber bands in the house; they knew exactly who had 'stolen' the stash of elastic strands."
"I fidget daily with this gavel that is made of stress-ball material and this Eos chapstick (I repeatedly take the lid off and put it back on)."
Fidget Widgets
things on your desk
embodied cognition
The Things People Fiddle With at Their Desks

redpajama_set_name: RedPajamaCommonCrawl


text:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Console Graphic Engine: Class Members - Variables</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>

<link href="search/search.css" rel="stylesheet" type="text/css"/>

<link href="doxygen.css" rel="stylesheet" type="text/css" />

Console Graphic Engine

Main Page

Classes

Files

          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)"
               onblur="searchBox.OnSearchFieldFocus(false)"
               onkeyup="searchBox.OnSearchFieldChange(event)"/>

Class List

Class Index

Class Hierarchy

Class Members

All

Functions

Variables

_focus
: Graphic

_focusable
: Graphic

_parentScene
: Graphic

_tag
: Graphic

_visibility
: Graphic

_x
: Graphic

_y
: Graphic

b
: Color

backColor
: PixelData

ch
: PixelData

e
: KeyboardEventManager::KeyEvent

FillWidth
: Textbox

foreColor
: PixelData

forward
: KeyboardEventManager::KeyEvent

g
: Color

keys
: KeyboardEventManager::KeyEvent

MONOPOLIZE_PRIORITY
: KeyboardEventManager

r
: Color

transparent
: Color

<address class="footer">
Generated by

 1.8.11
</address>


What's in a name? | Come Here To Me!
« The 'rave' in Richmond Park.
An impressive seventeen bridges span the River Liffey in Dublin city, and in many cases their names honour dead nationalists of Ireland's past. Sean Heuston, the 25-year-old rebel executed in 1916 for his role in the Easter rebellion, gives his name to the bridge next to the train station also named in his honour. Today, the LUAS passes over Heuston Bridge. It's ironic that the bridge was first opened with the name Kings Bridge to commemorate a visit by King George IV in 1821.
Liam Mellows addressing a gathering at Bodenstown. Today, Mellows Bridge is named in his honour.
Yet in recent times there has been real shift away from naming bridges in honour of political figures. James Joyce, Samuel Beckett and Sean O'Casey have seen bridges named in their honour in recent years. While of course O'Casey was a member of the Irish Citizen Army at one point and a socialist himself, the recent shift has been away from political figures and towards figures who are first and foremost cultural.
Various names have been proposed for the new bridge. In the pages of The Irish Times Frank McNally proposed a hero of Come Here To Me, Flann O'Brien (that is Myles na gCopaleen) as being the perfect candidate. Others have proposed Bram Stoker, while others have proposed to name the bridge in honour of the Abbey Theatre next to it. The fact that not a single Dublin bridge has been named in honour of a female figure from our past has been commented on in many quarters too, and the debate continues to rage.
Now, the union movement have entered the debate and proposed to name the bridge in honour of the Edinburgh born trade unionist James Connolly. Connolly's beloved Irish Citizen Army had its headquarters at Liberty Hall next to the bridge it should be remembered. What I like most about this idea however is something which many commentators may miss or even choose to ignore. Connolly played a central role in the Lockout of 1913, when Dublin tram workers were entangled in the greatest labour dispute in the history of the capital. To see the trams of Dublin today pass over Connolly Bridge would be some sight!
Connolly played a crucial role in the events of 1913, when the working people of Dublin took a stand for better living and working conditions. He also personifies the link between this struggle and the later events of Easter 1916, during which he led the rebel forces.
However Connolly must also be remembered for his importance as a thinker and a writer of seminal works on Irish history and society. He would not be out of place in the modern, cosmopolitan Dublin. Connolly was himself an immigrant. Born into grinding poverty in the Cowgate area of Edinburgh to Irish parents his legacy reaches beyond Ireland to Britain and the United States, where he also worked as a union organiser.
It's certainly a fine idea to name the bridge in honour of Connolly. I've heard one barstool genius already propose the Brian Lenihan Bridge, and no doubt we'll hear all sorts of other proposals between now and the time Dublin City Council reach their decision in the Autumn, but will Connolly win the day?
Harry Kernoff's 1936 woodcut tribute to Connolly.
It should be called the Gombeen Crawthumpers bridge. They've had far more influence on the country than anybody.
As much as I respect and admire Connolly, he hasn't done too badly in the monument stakes – just look at the railway station around the corner from this bridge. Something like Liberty Bridge or Union Bridge could be vague enough to be interpreted a few different ways. There's also the idea that this would link up the Abbey Theatre with the site of the formerly significant Theatre Royal on Hawkins Street, but overall I think the literary world and the political figures from the period 1798 – 1930 are well represented already, reflecting the essentially Georgian character of the city. How about something to do with Brian Boru (1000th anniversary of the Battle of Clontarf, after all) or even King Sitric Silkbeard (because he had a cool name)?
Given its proximity to the old Irish Press building maybe they should run with Con Houlihan Bridge.
It be most appropriate to call it Botched Republic bridge or name it in honour of the Church and call it Mental Reservation bridge.
For the women yet to be commemorated in our capital city, I can name but a few: Countess Markievicz, Thekla Beere, Louis Bennett, Kathleen Clarke, Mary Colum, Maria Edgeworth, Grace Gifford Plunkett, Maud Gonne, Eva Gore-Booth, Lady Gregory, Anna Haslam, Manie Jellett, Mary Lavin, Margaret MacCurtain, Hanna Sheehy Skeffington, Isabella Tod, Jennie Wyse Power: all of whom who would be worthy candidates for recognition on a political and cultural level, among many others that I am sure I have left out.
Dr Kathleen Lynn is worth a mention as well.


text:
Silva Screen - The Specials Soundtrack 10 out of 10
Antony Wainer (Press & Publicity) on October 8th, 2010
Murray Gold's music for Doctor Who is becoming a celebrated part of the new series. This year's Silva Screen Doctor Who release (October 2010) presents the soundtrack to the 2009 Doctor Who Specials.
We love Sarah Jane Smith!
Antony Wainer (Press & Publicity) on September 26th, 2010
The toybox almost forget this special Doctor Who Magazine publication from 1992 which looks back over the Time Warrior start to a Fact File finish in the Hand of Fear!
Sarah Jane items in the toybox as the new series starts on 11th October 2010
The toybox opens its lid for a spin off series today in preparation for the new series of the Sarah Jane Adventures starts on 11th October 2010.
This year the stories are:
1: The Nightmare Man by Joseph Lidster
2: The Vault of Secrets by Phil Ford
3: Death of the Doctor by Russell T Davies
4: The Empty Planet by Gareth Roberts
5: Lost in Time by Rupert Laight
The TV Movie - More Doctor 8!
The toybox this week looks at 1996 and the TV Movie.
September Toybox looks back at Time and the Rani!
23 years after its original transmission Time and the Rani is released onto DVD. This month the toybox finds three items that illustrate the story in merchandise form.
Doctor 4 arrives in the Toybox - Five new items added
Antony Wainer (Press & Publicity) on August 28th, 2010
Was it really a year ago that Tom Baker guested at Riverside for the Time event? Booking for this year's event is still taking place...In the meantime, there are five new items in the toybox. With the 2010 release of Revenge of the Cybermen onto DVD the toybox has found an early release on VHS Video. There is also a tin for your jelly babies and an edited version of The Brian of Morbius.
August 16th: New Seventh Doctor Items ready for Time4
With the Seventh Doctor announced as a guest at Time4 the Toybox dusts off some merchandise with a Seventh Doctor theme. The novelisations of 1990 gave insight into the televised stories of 1988 and 1989 as the classic series drew to a close. The novelisation continued however with Power of the Daleks and Evil of the Daleks in 1993 and the TV Movie in 1996.
New CD will go into the Toybox!
Silva Screen Records will be releasing the new Doctor Who double CD set - Doctor Who Original Music From Series 4: The Specials on 20th September. They will be running a Twitter campaign so if you would like to be the first to find out about the 2 CD set tracklisting and be kept up to date on Silva Screen's Doctor Who releases please join them on Twitter - http://twitter.com/silvascreen.
August 10th Opens some new Toybox items!
As the summer continues more 11th Doctor items fill the toybox. The Adipose are back!
The most recently added items can be viewed by clicking here.
August Toybox opens Classic Items!
Antony Wainer (Press & Publicity) on August 4th, 2010
New items are dragged out of the Toybox today. These include a rare Troughton piece, a jigsaw and every fans dream in 1982 - Wallpaper!!


It all started when a robber attempted to grab money from an 8-months-pregnant store clerk. When she recoiled and turned away to protect herself, the assailant pursued, jumping over the counter and attempting to pry the cash from her. Nearby employees rushed to help, eventually wrestling the robber to the ground. That's when the store manager approached with a fire extinguisher and used it to pummel the man as he attempted to get up off the ground. Raising the fire extinguisher over her head like a mallet at a carnival bell-ringing game, she brought it down with all her might against the robber's back at least five times, causing him to fall back to the floor repeatedly.
Needless to say, that thief will think twice before trying to rob that gas station again. You can watch the heated brawl in the video above.


Explore the differences between pro rodeos and ranch rodeos.
If you're like most people in the ag industry, there's one word that gets your heart beating and the excitement flowing: rodeo! There are two different types of rodeos—pro rodeos and ranch rodeos—and while they are both a lot of fun, the purpose of ranch rodeos is to uphold the traditions and experiences of life on the farm. Explore the differences between pro rodeos and ranch rodeos, below.
The Entrants. In a pro rodeo, the participants are professionals on the rodeo circuit. They travel around the country competing in pro rodeos; it's their "day job." They compete individually for points, and they likely have business sponsors.
In a ranch rodeo, the entrants are teams of local ranch hands who compete for fun; of course, bragging rights are also part of the deal. They often work on area cattle ranches in some capacity and once the rodeo is over, they are back in the saddle at the ranch.
Calf Branding. Teams are tasked with roping and mock "branding" a calf.
Team Doctoring. Teams separate an animal from a herd to take in for vet care.
Colt Riding. Teams hold an unbroken colt while one team member saddles and rides the horse.
Team Sorting. The team separates certain animals in an organized group effort.
Wild Cow Milking. The team ropes and hand-milks a wild cow.
The Awards. Pro rodeo awards focus on the points earned by each individual rider. Ranch rodeos focus on the efforts of the team.
Ranch rodeos celebrate the daily tasks found on any cattle ranch and AgAmerica is proud to honor those traditions by sponsoring the Florida Cattlemen's Association's Regional Qualifying Ranch Rodeos. Be sure to check out the schedule for an event near you.
Back at the ranch, if you're wondering how our custom cattle ranch loans can improve your cattle operation, then saddle up and contact us to speak with a knowledgeable team member.


Enterprises depend on reliable IT systems. Lucatec is your competent partner, whether you merely require assistance for your in-house IT department or are looking for one-stop comprehensive support services for all your IT needs. We are proficient in topics as diverse as Managed Services, Server Virtualisation, High-Availability Storage Solutions as well as all things Microsoft.
For a full overview of our services and competencies please refer to our German language pages.


text:
Entertainment Pakistan > Naveen Waqar
Exclusive: Director reveals details of Ali Rehman & Ushna Shah's drama Bewafa
Epk previously broke the news of an exciting new project starring a compelling star cast of Ali Rehman, Ushna Shah and Naveen Waqar. We are back with more information about this intriguing new project. The drama is being brought to us by the Bandish's director Aabis Raza, and it will be produced by Big Bang […]
Ali Rehman, Ushna Shah & Naveen Waqar in an upcoming drama
The very talented Ali Rehman and renowned actresses Ushna Shah and Naveen Waqar will be seen in the lead roles in a promising upcoming project. Cheekh Episode 19 Review After Main Khayal Hoon Kisi Aur Ka, Ali Rehman is currently being seen in Khaas. The actor will now be seen in another upcoming drama on […]
EPK Drama Recommendation: Watch Kaisa Hai Naseeban tonight!
EPK brings to you TV Drama Guide for Wednesday, 13th March. Three major dramas airing tonight are Kaisa Hai Naseeban Qaid & Tajdeed E Wafa. Kaisa Hai Naseeban starring Muneeb Butt and Ramsha Khan in lead roles is our pick of the day for you on 27 February. You can watch episode 19 & 20 […]
Drama Guide: find out which drama should be on your watch list on Sundays!
27 January Sunday DramasThe episodes of this Sunday's dramas were as pleasurable as ever! Quite a lot happened in each respective drama, and we hope you caught up on these shows as well. Romeo Weds Heer, Tajdeed e Wafa and Hoor Pari were the ones that came out on top this week as well, with […]
Drama Guide: find out which drama did well on this Sunday!
It's a pretty easy choice to make on Sundays: what drama is the most stress-free and enjoyable at the same time? The dramas on Sunday, Romeo Weds Heer, Tajdeed e Wafa and Hoor Pari, all have winning characteristics which is why they're the most watched dramas of Sundays currently. But do they really fit into […]
Tajdeed e Wafa Episode 13: Arsal receives a shocking revelation
Written by: Samira Fazal Directed by: Ilyas Kashmiri Produced by: Momina Duraid Productions Episode 13 starts off on a lighter note as Arsal and Hareem's marriage brings out the joy in everyone, even Arsal's father. But the gloom of Asher and Neha's absence casts a dark shadow on marriage celebrations. In an attempt to remove […]
Tajdeed e Wafa Episode 11: Arsal and Hareem make a hasty decision
Written by: Samira Fazal Directed by: Ilyas Kashmiri Produced by: Momina Duraid Productions A ray of hope shines through for Arsal and Hareem in episode 11 as amidst the numerous divorces and marital troubles, both finally decide to make up and get married as soon as possible. The episode also further developed how Asher […]
Tajdeed e Wafa Episode 10: The Unintended Victims of a divorce, are the children.
Written by: Samira Fazal Directed by: Ilyas Kashmiri Produced by: Momina Duraid Productions Episode 10 opened up with a bittersweet flashback of the beginning of Asher and Neha's marriage. In fact, most of the episode aimed to remind us of the emotional baggage that this relationship carries in the hearts of all the characters, from […]
Tajdeed-e-Wafa Episode 9: The Calm Before The Storm
Written by: Samira Fazal Directed by: Ilyas Kashmiri Produced by: Momina Duraid Productions The complications in the lives of the main characters increase tenfold in episode 9 as the brilliant acting and engaging storyline really shines through. The episode picks up where it left off in the last episode amidst the crumbling marriage of […]
Tajdeed-e-Wafa Episode 8: Where Tragedy and Reality Meet
With its strong female leads and bleak depiction of marriages, Tajdeed-e-Wafa has delivered exceptionally well with each episode. In episode 8, the story line focuses on Arsal (Ahmed Ali) and his engagement and Ashar (Haroon Shahid) dealing with a crumbling marriage. With Arsal finally getting what he had been struggling for since the beginning […]
Tajdeed e wafa Ep 6: Complications in father son relationship
Directed by: Ilyas Kashmiri Written by: Sameera Fazal Production house: MD productions This episode was light and entertaining showing Arsal (Ahmed Ali) and Hareem's (Ainy Jaffery) engagement preparations with cute little scenes between Arsal's father (Abid Ali) and Hareem. He is totally acting opposite to his nature and the whole family is in a shock […]
TAJDEED E WAFA: A Top Notch Depiction Of Dysfunctional Families
The term Dysfunction family refers to a family having a relationship that is not conducive to the physical and emotional health of the family members. It often leads to conflicts, maltreatment, and misbehaviors. These families generally have lower levels of mental peace, content, and happiness. Dysfunctional families are a social problem for two main reasons. […]
Tajdeed e Wafa Ep 5: A "Feel-good" Drama!
Writer: Sameera Fazal Director: Ilyas Kashmiri Produced by: MD Productions The most important event in the latest episode was Arsal (Ahmad Ali Akbar) and Hareem's (Ainy Jaffrey) engagement fixing to the surprise of both Arsal and Hareem, for when they make their parents meet each other, things turn out to be totally different from expected. […]


text:
Q: Unit test not running using maven I am not able to run my unit test using maven. I tried using mvn clean install and mvn test to run the test, but is not providing the expected result.
I have included the following dependencies :
<dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <scope>test</scope>
</dependency>
<dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka-streams-test-utils</artifactId>
        <scope>test</scope>
</dependency>

    <build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
        </plugin>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.1</version>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <!--include manifest in repository jar-->
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

The test class contains the following nomenclature and annotation :
@ExtendWith(SpringExtension.class)
@SpringBootTest(
    webEnvironment = WebEnvironment.NONE,
    classes = {TruckIdLookupService.class, TimescaleConfiguration.class})
public class TestClassName {

The method name as following annotation and name:
@Test
void testMethodName() throws Exception {

I am able to get expected result in Intellij but maven is not running the tests.
[INFO] --- maven-surefire-plugin:2.22.1:test (default-test) @ truckmsg-processor ---
[INFO]
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

A: Changing the junit Jupiter dependency helped :
<dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <scope>test</scope>
</dependency>

A: Is it possible that your system is not injecting the correct class correctly?
Checking my code in some projects, I notice that I have the following notation:
@RunWith(SpringJUnit4ClassRunner.class)

And here you can see what it does.

A: @SpringBootTest(classes = App.class)
@WebAppConfiguration
@Transactional
public class BulkTests {
@Test
     public void test1() {
     }
 }

A: Adding this dependency helped:
<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>

redpajama_set_name: RedPajamaStackExchange


text:
Home > Contents > People > Photographers > John Rogerson
Dates: 1816 - ?
Active: Great Britain
Approved biography for John Rogerson
Rogerson seems to have had an interest in the production of large photographs. Frustratingly, in the myriad references made to him he is always "Mr. Rogerson." Given his location and personal accomplishments, he seems most likely to have been John Rogerson, an engineer and millwright in Manchester who advanced through his skills to the title of mechanician. Rogerson was a member of the Chorlton Photographic Association from at least 1857 and was clearly an experimenter. He attempted to apply electricity to the photographic plate, with no success, and commented frequently in journals on the approaches of others. Rogerson was elected a member of the larger Manchester Photographic Society in 1860 and remained active throughout that decade. He experimented with enlarging small negatives, writing in 1859 that his "attention was first drawn to the subject by being called upon to make large negatives, at times when it was utterly impossible to do so, from the feebleness of the light." However, he was primarily a master of the large waxed-paper negative, an accomplishment for which he was highly praised. At an 1860 meeting of the Manchester Photographic Society, according to Photographic News, Rogerson "exhibited several very large pictures — 23 by 18 inches — taken by the turpentine waxed-paper process, which were very much admired, being remarkably sharp, and full of half-tone, and force." In 1860 he built an "exceedingly small and compact" stereo camera, and in 1865 he was commissioned by joseph sidebotham to make a camera. None of Rogerson's large photographs are known to have survived.


Put a nail in pipe while locating a stud. Called 5 plumbers,Roto rooter was the only one that returned call promptly and was able to arrive within 2 hours (had said within the hour, however, after exceptional work, I got over that part). Robert immediately had a plan of action, knew the cost and went straight to work, finishing within 30 minutes. He was polite, professional and knew what he was doing. Will definitely call on Roto rooter again and will be asking for Robert.
Now this is a plumbing company that do very professional work ,we had to call them out because of tree roots that was growing in our pipes,and they kelp on working on our plumbing until thr job was done very well ,I would always call on this company for my plumbing problems because they do great work.
Roto Rooter has not added any photos.
Looking for Plumbing pros in Cordova?


What agronomic practices can reduce the effect of Fusarium head blight on durum wheat in Saskatchewan?
Fusarium head blight (FHB) has become an important disease of cereals in moist regions of western Canada. This disease has played an important role in contributing to lower grain yields and substantial downgrading of durum wheat (Triticum turgidum L. var. durum). The objective of this study, conducted at three locations on the Canadian prairie, two in Saskatchewan and one in Manitoba, from 2001 to 2003, was to determine the effect of seeding density, nitrogen supply, fungicide treatment, and durum wheat cultivar on FHB development, grain quality, grade protection and economic return. A four-way factorial design was used with two seed densities (150 and 300 viable seeds m-2), two nitrogen rates (75 and 100% of recommended rate), three cultivars (AC Avonlea, AC Morse and AC Navigator), and four fungicide treatments (no application, Tilt at flag leaf, Folicur at anthesis and Tilt at flag leaf followed by Folicur at anthesis). Increasing the seed density decreased FHB at 4 out of the 7 site year when FHB occurred, however increasing the seed density tended to increase leaf disease severity. The application of Folicur did not affect Fusarium levels. The application of Tilt and /or Folicur decreased leaf disease at 6 out of 9 site years and affected yield at 5 out of 9 site years. There was no consistent effect from nitrogen or cultivar.


If I can't come up with a one-liner for my own prompt, will I go to jail? More importantly, how will I be sentenced?
Categories: Blogging, Blogs, Funny, One-Liner Wednesday, Prompt, Random | Tags: #1linerWeds, Humor, humour, inspiration, puns, writers, writing, writing prompt | Permalink.
I am going to make an assumption about what blogger jail would look like. Most importantly, it would not have the internet, so whatever these people placed in this facility had on their minds, they would not be able to relate this information to others. They would serve their time not being able to voice their ideas, thoughts, and feelings or share their passions and this would seem like harsh punishment to them. Whether their passion is business, personal finance, cooking, politics, photography, or marketing, or just writing about their mundane lives they would no longer have the opportunity to connect and network with likeminded individuals.
The sentence: A deduction of bonus points?
I think we'd give you credit for time served. But, we might refer to you ans an ex-con.
Ha Ha! We'll forgive you!


text:
Thompon70564
What is euro qualifiers 2020 denmark vs. belgium
The Belgians are heavily fancied to take top billing given their star wattage, but the Danes and Russians look closely matched to potentially join them in the knockouts.
Denmark. 2020/11/18 UEFA Nations League. 18/11/2020. W. BEL. Belgium 3-1.
The seedings for Euro 2020 have been determined by a nation's record in qualifying. Russia, Denmark, Belgium. Group C: Netherlands, Romania*, Ukraine.
Denmark qualified from one of the tougher groups without defeat and more than held their own against England and Belgium in the Nations League. PARIS: Star-studded Belgium will be the clear favourites for Group B at Euro 2020 as they aim for a first ever major tournament win, while dark horses Denmark boast a squad packed with talent EURO 2020: This is your quick guide to Denmark - form, fixtures and a goal against Austria during their 2022 FIFA World Cup qualifying match.
Keep up to date with all the top news and reaction from Euro 2020. of Denmark's opening Euro 2020 match against Finland before being treated on to use what happened as motivation for their next game against Be
The UEFA Euro 2020 qualifying tournament was a football competition that was played from March 2019 to November 2020 to determine the 24 UEFA member men's national teams that advanced to the UEFA Euro 2020 final tournament, to be staged across Europe in June and July 2021. Jun 13, 2021 · Denmark - Belgium, Round 2 of Euro 2020 The odds are slightly in favor of Belgium to make it 2wins in a row and put a firm foot on the top spot.
00:48:25 . Belgium vs Russia Euro 2020 will take place at Krestovsky Stadium. national team lost both matches against Belgium in the European qualifiers. Watch Euro 2020 Denmark vs Finland Soccer Streams Reddit: Game The second day of Euro 2020 gets underway with six teams playing their How to watch Belgium vs Russia – and live coverage of all other Euro 2020 fixtures clash between Denmark and tournament newcomers Finland going Also Watch European 2020 Qualifiers semi final & final match live telecast & Scores. Keep up to date with all the top news and reaction from Euro 2020.
Australia The seedings for Euro 2020 have been determined by a nation's record in qualifying. Russia, Denmark, Belgium. Group C: Netherlands, Romania*, Ukraine. Mar 20, 2019 · "Switzerland, Italy, Denmark, Austria, Bosnia-Herzegovina, Poland, Serbia, Russia, the Czech Republic, Wales, Sweden and Turkey are most likely to complete the 20 direct qualifiers for Euro 2020 May 18, 2021 · View all the fixtures for the finals of Euro 2020. Austria, Belgium, Croatia, Czech Republic, Denmark, England, Finland, France, Germany, Hungary, Italy, Netherlands Jun 11, 2021 · Today at Euro 2020: Wales face Switzerland; Denmark vs Finland and Belgium vs Russia 06/11/2021 Wales start their campaign against Switzerland in Baku on Saturday and Gareth Bale insists his side are under no pressure to match their results from 2016. · The 29-year-old was particularly impressive during the Qualifiers leading up to Euro 2020. He featured in all eight games and had nine goal contributions (five goals and four assists).
By accessing FIBA. basketball pages, Denmark were some people's underdogs for Euro 2020 but the defeat to Read our full match preview and prediction for Denmark vs Belgium in the against Belgium to get themselves back into contention for qualificati Denmark secured their spot at Euro 2020 in their final qualification Belgium, Watch every Socceroos World Cup Qualifier in June Live & Free on Finland beat Denmark 1-0 in their opening match of Euro 2020 which Last but certainly not least, we have one of the tournament favorites, Belgium, taking on Russia, who had a pretty good qualifying campaign as In the qualifying match, Denmark's key player Christian Eriksen scored 5 goals. Denmark in the Euro 2020 Group B match faced a draw against the team Finland, Belgium, and Russia.
Xoqfe
YSA
wdy
NpDv
ZEOI
Germany vs netherlands cancelled croatia vs. scotland
Which citys will host the 2020 euro croatia vs. czech republic
How are euro 2020 qualifying groups seeded finland vs. russia
Euro 2020 portugal tickets netherlands vs. ukraine
Euro 2020 qualif germany vs. hungary
Euro 2020 match schedule turkey vs. wales
DEN Denmark. 25 Mar European Qualifiers 25/03/2021. L. BEL Belgium. 4-2. DEN Denmark.
Live stream uk football scotland vs. czech republic
Group of death euro 2020 turkey vs. wales
France jersey euro 2020 ukraine vs. austria
Iceland qualifiers euro 2020 czech republic vs. england
Euro cup 2020 final tickets turkey vs. wales
Live onlain meciurile euro 2020 slovakia vs. spain
Netherlands vs germany euro 2020 stream portugal vs. france
Euro 2020 belgique hungary vs. france
Euro 2020 format spain vs. sweden


text:
class statemgr
{
public:
    static statemgr* instance();

    void handle(const void *data);

    void changeState(EStateType curtype);

    void unit();

private:
    bool init();

private:
    static statemgr *msp_self;

    state *mp_cur_state_handle;

    std::map<EStateType, state *> m_state_map;

private:
    statemgr();
    virtual ~statemgr();
    statemgr(const statemgr &) = delete;
    statemgr& operator=(const statemgr &) = delete;
};

#endif //_STATE_MGR_H_


text:
Conferences About the Arctic – Do They Really Matter?
Beate Steinveg conducts research on conferences focusing on the Arctic. Do they fill a function? (Photo: Bjørn Hatteng, University of Tromsø – Norway's Arctic University)
Published at: Nov 14 2017 - 14:31 / Updated at: Nov 14 2017 - 14:31
The Arctic, or the High North, is the topic of an endless series of conferences. But do these conferences fill a role? Do they affect policies?
From Linda Storholm (Translated by Elisabeth Bergquist)
PhD Candidate Beate Steinveg of the University of Tromsø conducts her research on conferences about the Arctic. Yup, that's right. With climate change, improved access and generally more attention drawn to the region, there is also an ever-increasing amount of larger and smaller conferences focusing on Arctic opportunities and challenges.
Beate Steinveg has chosen two major conferences as her main cases; the Arctic Frontiers that is run in Tromsø, Norway every January, and the Arctic Circle Assembly, which takes place in Reykjavik, Iceland every October. Both conferences convene some 2,000 attendees who have an interest in these issues and the question Steinveg asks is whether or not such conferences matter. What function do they have for different countries or actors with an interest in the region? Do they affect developments in politics or science?
- I write about conferences within a certain perspective and look at which function they have in the larger context of international cooperation. I will also investigate whether or not they carry elements of realpolitik, if there is genuine inference on politics, Steinveg elaborates.
- What are your findings so far?
- So far, it appears as if there is a lot of politics involved, in particular behind the scenes.
Enormous apparatus
The size of the apparatus involved with the conferences is astonishing. There is much happening behind the scenes, much that is not officially announced on the programme.
Steinveg has also discovered that conferences are used as political arenas and meeting places, and that a lot is put into attracting 'the right people' – top level politicians.
- I have spoken with people who say that when they go to a conference they only attend individual meetings, not any of the gatherings announced on the programme.
- Do they say anything about why they choose to participate on such arenas?
- It is my impression that representatives of the Arctic states are there to sell in their visions and often seek to promote their own interests. They also want to secure a realistic presentation of the Arctic and in that respect kill some of the myths about there only being 'snow, ice and polar bears'. There are actually people living here. Many of the non-Arctic states are there to launch themselves as Arctic actors, and their participation can often be traced back to economic interests.
There is an increasing amount of countries signing in. during this year's Arctic Circle Assembly, Saudi Arabia joined the field. Most European countries have already flagged their interests. Both Great Britain, France and Germany emphasize Arctic knowledge and research, and in addition there are the major Asian economies.
- Perhaps countries from South America or Africa will be next, Steinveg says dryly.
Very strange
Her field is political science, and her PhD research project was not her own idea – it was in the announcement from the University of Tromsø when the PhD Candidate position was announced.
- However, I found the project very interesting. We see that there is an ever-growing number of such arenas and it is interesting to see whether and what effect they may have.
- What response do you meet when you tell people about your research?
- Some find it very odd or do not understand why. Others are very enthusiastic and think it is about time that someone finds out about all this.
'No one' is in charge
She is now one year into the project that is planned to last for four years. Interviews with participants and actors have been most educational so far. When this year's Arctic Circle Assembly took place a few weeks ago, Steinveg was present, aiming to speak with as many people as possible during the three days of the conference. She points out that one of the challenges is that no one carries a specific responsibility for following up initiatives that appear during a conference, and whether or not it is followed up may appear rather random.
- It is thus hard to trace whether or not political initiatives surfacing during a conference really have any effect or not, because no one carries any specific responsibility for following up. Interviews are thus what has been most educational for me so far, Steinveg explains.
From natural science to hybrid
She is now trying to find out how people benefit from attending arenas like these. She is also looking at what issues are raised.
- So far, there is a lot about climate and sustainable development, however, economic and political/community development is also represented.
That constitutes a change:
- I can see that over a longer time perspective, from the 1970s and 1980s and until now, there has been a development from the agenda covering narrow, often natural science-related issues to today's hybrid conferences covering more or less everything; politics, natural sciences, business, local communities, indigenous issues as well as various forms of international cooperation during one and the same conference.
And they abound…
- There is a vast number of conferences with Arctic issues on the agenda every year and in the most incredible places, Steinveg adds. She lives in the Arctic capital of Tromsø herself, which may be influenced by hosting the large Arctic Frontiers conference? Or maybe not?
We will not have an answer to that until Steinveg's research project is completed.
Just a lot of talk, or do conferences like the Arctic Circle Assembly carry any significance? That is among the questions Beate Steinveg asks in her research. (Photo: Linda Storholm)
Les artikkelen på norsk
Arctic Circle Assembly
Arctic Frontiers
Arctic research
Beate Steinveg


text:
Virginia Election Results
Following the Funds
Truth Tracker
Texas Gov. Greg Abbott speaks during his inauguration ceremony in Austin, Texas, Tuesday, Jan. 17, 2023. (AP Photo/Eric Gay)
Texas' Abbott begins 3rd term promising safer schools
by: PAUL J. WEBER and ACACIA CORONADO, Associated Press
AUSTIN, Texas (AP) — Texas Gov. Greg Abbott promised safer classrooms Tuesday without mentioning the Uvalde school shooting as he began a record-tying third term in office that puts the Republican in line to remain a rising national figure.
His inaugural address outside the Texas Capitol did not include specific policy prescriptions in the aftermath of a gunman with an AR-15-style rifle killing 19 children and two teachers at Robb Elementary School. The May tragedy was compounded by a hesitant law enforcement response that remains under investigation and has led to the resignation of several officers.
Abbott touched on mental health and made assurances of swift — albeit still undetermined — action as he began a ninth year in office. He pushed back on calls for tougher gun restrictions during his reelection campaign and it is doubtful the GOP-controlled Legislature would raise the minimum age to purchase AR-15-style rifles from 18 to 21 years old, which has become one of the biggest demands of the most vocal families in Uvalde.
"Parents must know that their children are safe when they drop them off every morning," Abbott said.
It made for a pause in an otherwise optimistic address that portrayed Texas as a prosperous and booming economic juggernaut. The state recently surpassed 30 million residents and lawmakers are starting this year with a $32 billion budget surplus, a stockpile larger than what other states spend in total from annual general funds.
Whether Abbott, 65, has presidential ambitions in 2024 will also be closely watched. His top political strategist said in November they had not discussed the possibility, but Abbott has never shut the door on a White House run.
In the short term, Abbott's grip on Texas has seldom appeared tighter: He cruised to reelection in a commanding victory over Democrat Beto O'Rourke, turning back critics who blistered his handling of the Uvalde shooting, the deadly winter collapse of the state's electric grid and his signing an abortion ban with no exceptions in cases of rape or incest.
Nationally, Abbott has taken his party's mantle on hardline immigration measures amid a feud with the Biden administration over record numbers of migrants crossing the U.S.-Mexico border. He continues to bus migrants to cities with Democratic mayors and preside over a $4 billion border security operation.
"With the Biden Administration missing in action, Texas is using every tool to protect our state," he said.
Texas' new legislative session is the first since Democrats fled from the state Capitol to Washington, D.C., in 2021 in a dramatic quorum break to temporarily delay passage of new voting restrictions for weeks. Democrats remain vastly outnumbered in the Legislature and have little ability to stop Abbott's agenda, but struck an optimistic tone Tuesday.
"To the extent that the governor and other leaders focus on those bread-and-butter issues like education, jobs and infrastructure, I think there is plenty of opportunity for bipartisan work," said state Rep. Chris Turner, who was the Democratic House leader when his caucus bolted to Washington.


text:
Out of Vogue: Chinese Consumers Are Tired of 'High-Level Faces'
When it comes to connecting with China's fashionistas, Western luxury and fashion brands aren't exactly models of success.
Zeng Yuli
Zeng Yuli Writer
Zeng Yuli is a freelance writer focusing on Chinese youth culture.
As China's become one of the biggest markets in the world over the past decade, international brands — especially fashion and luxury brands — have sought to claim a share of this wealth for themselves. But as their spate of recent, poorly received ad campaigns reveals, the line between winning over Chinese consumers and setting them off is a thin one, and cultural and aesthetic gaps between China and the West can't be papered over with good intentions.
In early January, the well-known British brand Burberry debuted an ad campaign in honor of the upcoming Lunar New Year holiday. Shot by photographer Ethan James Green, the campaign, which starred the well-known Chinese actresses Zhao Wei and Zhou Dongyu, was meant to invoke the happiness of home. But the resulting photos — which feature a dour, cold-looking family set against an ominous gray backdrop — left netizens feeling more chilled than cheered. Online, some wondered at Green's ability to make Lunar New Year look like Tomb-Sweeping Day.
A little over a month later, in mid-February, Spanish retailer Zara ran into problems of its own. The company's latest cosmetics campaign, which starred a freckled Chinese model named Li Jingwen, known professionally as Jing Wen, ignited an online firestorm as netizens debated whether Zara had insulted China with its choice of such an "ugly" model. Public opinion was largely split, with some praising Zara for providing a natural, unaltered representation of Jing Wen's unique allure, and others criticizing the company for propagating tired Western stereotypes of Asian beauty.
Even Vogue's American edition has come under fire. On March 3, the magazine's official Instagram page posted a photo of Gao Qizhen, a Chinese model with narrow, wide-set eyes, delicate eyebrows, and flat facial features who also goes by Tin Gao. The caption praised Gao's "singular appeal," but netizens disagreed once again. Almost as soon as the photo hit the internet, they were up in arms, with some decrying the photo's latent "cultural imperialism," or complaining that Westerners continue to fixate on one, highly stereotypical type of Asian appearance, to the exclusion of all others.
Top: Burberry's 2019 campaign. Ethan James Green/IC; Bottom left: A portrait of Chinese model Tin Gao published on Vogue's Instagram account on March 3, 2019. From the Instagram of voguemagazine; Bottom right: a photo of the freckle-faced Chinese model Li Jingwen from Zara's February campaign. From Zara's official website
Western fashion brands and magazines occasionally use models to challenge traditional beauty norms. But to many Chinese, the "beauty" Westerners find in some Chinese faces is grounded in outdated, highly rigid notions of what Asians should look like.
Take, for example, the so-called high-level face — a term for a combination of traits including wide-set eyes, high cheekbones, thick lips, and a square jaw. The word became popular in China as a complimentary, but firmly tongue-in-cheek way of referring to the kinds of Asian faces the Western fashion world tends to highlight.
One reason why netizens are so sensitive to the content of these campaigns is that the West, whether implicitly or explicitly, has a long history of exploiting and exoticizing the bodies and cultures of people of color. Take the backlash against Dolce & Gabbana's embarrassingly stereotypical video series last year, for example, or the Metropolitan Museum of Art's 2015 exhibition "China: Through the Looking Glass," which traded in what the scholar Edward Said would have identified as Orientalist fantasies. Holland Cotter, an art critic at The New York Times, got it right when he pointed out that the show elided discussions of how fashion perpetuates stereotypes in favor of "harmless surface and shine."
Yet while we must be mindful of this history, we shouldn't let the past turn us into oversensitive hyper-nationalists, either. Fashion, as the Met exhibit itself tried to argue, is ill-suited to politics. When it comes to beauty and taste, on the other hand, it stands on much firmer ground.
Given the immense power fashion companies wield, it's a shame that, as they seek to broaden the boundaries of beauty, they often end up setting up new limits.
- Zeng Yuli, writer
In a materialistic society like ours, fashion and luxury goods are expected to be more than just typical commodities: They're meant to stand against all that's dull, uniform, and boring about our era of mass-produced consumerism. Their combination of scarcity and singularity, as well as their aesthetic flair, speaks to a widespread desire to set oneself apart from the crowd.
To pull this off, luxury brands are always seeking the cutting edge, sometimes in ways that challenge the boundaries of aesthetic expression or our preconceived notions of beauty — and sometimes in ways that overstep them. But by positing that what some might call "ugly" is in fact beautiful, they force us to reconsider otherwise neglected forms of beauty.
It's a good thing to have our notions of beauty challenged. The fashion world's emphasis on high-level faces can help expand our definitions of beauty, or even encourage us to rethink our habit of judging people by their appearances alone. And when people accuse Zara or Vogue of using "ugly" models, they, unintentionally or otherwise, put limits on women and equate beauty with outward appearances.
But good intentions shouldn't exempt brands from criticism, either. Given the immense power fashion companies wield, it's a shame that, as they seek to broaden the boundaries of beauty, they often end up setting up new limits. For example, their recent obsession with high-level faces has marked these traits as a new standard of beauty. Such standards are always simplistic, however, and ultimately just as hegemonic as any other.
So how should fashion and luxury brands proceed? Consumers have made it clear that they have no interest in Orientalist fantasies, nor can Western companies get away with pleading ignorance anymore. That doesn't mean their artistic directors have to give up on diversity; it just means that it should come from a place of respect, not authority. Their goal should be to introduce people to as many different types of beauty as possible, not the creation of new, but ultimately equally unattainable and limiting aesthetic ideals.
Translator: Matt Turner; editors: Zhang Bo and Kilian O'Donnell.
(Header image: The actresses Zhao Wei (in black) and Zhou Dongyu (in the red sweater) pose for a 2019 Burberry campaign. Ethan James Green/VCG)
Make America Dated Again: The Chinese Reproducing US Vintage
Itsy-Bitsy Teeny-Weeny 'Beijing Bikini' Is Unseemly, City Says
The Chinese Sneakerheads Pursuing Passion, Profit
Fast Fashion Retailer Forever 21 Closes Shop in China


Choosing unique and innovative furniture for your new home can be a tough decision. There are so many options for fun and interesting furniture in Nigeria that sometimes, the task can seem impossible. Whether you're furnishing a new home or replacing old, beat up furniture, comparing prices and styles will surely speed up the process.
If you're in search of affordable and contemporary pieces for your home, you can find the most recent fads in Nigeria home décor here. Inflatable couches, chairs, and beds are more popular than ever with hundreds of styles to choose from. You can view multiple styles at once while comparing colors, size, and prices with ease in the comfort of your own home. Traveling from store to store and trying compare one item with another is a thing of the past.
Whether you are on a budget or the sky's the limit, we offer selections in every price range. Some items start as low as only ₦ 25 to give you the best selection at the most affordable prices in Nigeria. Any type of furniture you can think of for your home including chairs, beds, and dressers are all available in affordable and stylish designs.


Frank Thomas watch the game from the Tide bench.
Just 7,500 fans came to Denny Stadium on Nov. 24, 1945 to see the No. 3 ranked Crimson Tide crush the Pensacola Naval Air Base Goslings 55-6. The Tides' first string scored three touchdowns in their first three possessions and then left the rest of the game to the backups. It was the eighth straight win for Alabama who had just been invited to play in the 1946 Rose Bowl game.