public static void Methods_NonNullParam_InvokeAndReturn()
    {
        var xmlReader           = XmlReader.Create(new MemoryStream());
        var xmlWriter           = XmlWriter.Create(new MemoryStream());
        var dummyToken          = new DummySecurityToken();
        var keyIdentifier       = new SecurityKeyIdentifier();
        var keyIdentifierClause = new SecurityKeyIdentifierClauseImpl("DummyClause");
        var sts = new SecurityTokenSerializerImpl();

        Assert.NotNull(sts);
        Assert.True(sts.CanReadKeyIdentifier(xmlReader));
        Assert.True(sts.CanReadKeyIdentifierClause(xmlReader));
        Assert.True(sts.CanReadToken(xmlReader));
        Assert.True(sts.CanWriteKeyIdentifier(keyIdentifier));
        Assert.True(sts.CanWriteKeyIdentifierClause(keyIdentifierClause));
        Assert.True(sts.CanWriteToken(dummyToken));

        SecurityToken token = sts.ReadToken(xmlReader, SecurityTokenResolver.CreateDefaultSecurityTokenResolver(new ReadOnlyCollection <SecurityToken>(new List <SecurityToken>()
        {
            dummyToken
        }), false));
        SecurityKeyIdentifier       identifier       = sts.ReadKeyIdentifier(xmlReader);
        SecurityKeyIdentifierClause identifierClause = sts.ReadKeyIdentifierClause(xmlReader);

        Assert.IsType <DummySecurityToken>(token);
        Assert.IsType <SecurityKeyIdentifier>(identifier);
        Assert.IsType <SecurityKeyIdentifierClauseImpl>(identifierClause);

        sts.WriteToken(xmlWriter, dummyToken);
        sts.WriteKeyIdentifier(xmlWriter, keyIdentifier);
        sts.WriteKeyIdentifierClause(xmlWriter, keyIdentifierClause);
        Assert.True(sts.WriteTokenCoreCalled);
        Assert.True(sts.WriteKeyIdentifierCoreCalled);
        Assert.True(sts.WriteKeyIdentifierClauseCoreCalled);
    }
    public static void Methods_NullParam_Throws()
    {
        var sts = new SecurityTokenSerializerImpl();

        Assert.NotNull(sts);
        Assert.Throws <ArgumentNullException>(() => sts.CanReadKeyIdentifier(null));
        Assert.Throws <ArgumentNullException>(() => sts.CanReadKeyIdentifierClause(null));
        Assert.Throws <ArgumentNullException>(() => sts.CanReadToken(null));
        Assert.Throws <ArgumentNullException>(() => sts.CanWriteKeyIdentifier(null));
        Assert.Throws <ArgumentNullException>(() => sts.CanWriteKeyIdentifierClause(null));
        Assert.Throws <ArgumentNullException>(() => sts.CanWriteToken(null));
        Assert.Throws <ArgumentNullException>(() => sts.ReadToken(null, null));
        Assert.Throws <ArgumentNullException>(() => sts.ReadKeyIdentifier(null));
        Assert.Throws <ArgumentNullException>(() => sts.ReadKeyIdentifierClause(null));
        Assert.Throws <ArgumentNullException>(() => sts.WriteToken(null, null));
        Assert.Throws <ArgumentNullException>(() => sts.WriteKeyIdentifier(null, null));
        Assert.Throws <ArgumentNullException>(() => sts.WriteKeyIdentifierClause(null, null));
        Assert.False(sts.WriteTokenCoreCalled);
        Assert.False(sts.WriteKeyIdentifierCoreCalled);
        Assert.False(sts.WriteKeyIdentifierClauseCoreCalled);
    }